交集问题

来源:互联网 发布:linux的dd创建多个文件 编辑:程序博客网 时间:2024/06/08 14:30



首先我说下增加,增加的时候是一张一张的增加的,增加一张照片时候可以选择班级的学生,比如说班级有20个人,但是我照片里面只拍了2个人,那我就选择两个人,现在的需求是这样的,前端可以传过来很多张图片,比如说传过来5张图片,下面的姓名是某个班级下面所有的学生,比如这传过来的五张图片增加的时候都有萌萌这个学生,那么显示效果就和设计图的萌萌那种效果,那如果前端传过来的照片有5张,那你只有其中的 一张或者某些张,那么就是打勾的,类似于半选中,那如果你一张都没有,那你就是不选,这个要怎么做? 


 $info = $this->request->input("file"); //传过来的照片id
        $info = array(1, 2, 3, 4);
        //根据照片id获得下面的学生
        $childIdArr = [];
        foreach ($info as $v) {
            $childIdArr[] = CourseRecordChildModel::getChildIdByCourseRecordId($v);
        }
        $intersectArr = [];
        //求交集
        foreach ($childIdArr as $key => $value) {
            if ($key == 0) {
                $valueArr = $value;
            }
            //求出交集
            $intersectArr = array_intersect($valueArr, $value);
        }
        //求差集
        foreach ($childIdArr as $ck => $cv) {
            foreach ($cv as $item) {
                $childIdArrOne[] = $item;
            }
        }
        //求差集
        $diffArr = array_diff($childIdArrOne, $intersectArr);
        //获得班级所有的学生信息
        $childInfo = CourseRecordModel::getChildInfoByClassId();
        //把对象转为数组
        if (!empty($childInfo)) {
            foreach ($childInfo as &$chindvalue) {
                //把对象转数组
                $chindvalue = get_object_vars($chindvalue);
            }
        } else {
            $childInfo = [];
        }
        foreach ($childInfo as &$childInfoValue) {
            $childInfoValue['status'] = 0;
            foreach ($intersectArr as $intersectValue) {
                if ($intersectValue == $childInfoValue['child_id']) {
                    $childInfoValue['status'] = 2;
                }
            }
            foreach($diffArr as $diffValue){
                if ($diffValue == $childInfoValue['child_id']) {
                    $childInfoValue['status'] = 1;
                }
            }
        }


        return view("courseeecord/update_course_record_page",['childInfo'=>$childInfo]);

0 0
原创粉丝点击