Maison >développement back-end >tutoriel php >PHP实现一个二维数组的合并
1.此问题主要是PH操作P二维数组的合并;
2.初始数组如下:
<code>$course = array( array( 'course_name' => '高等数学', 'major_name' => '计算机专业', 'school_name' => '某A高校' ), array( 'course_name' => '高等数学', 'major_name' => '物理专业', 'school_name' => '某A高校' ), array( 'course_name' => '高等数学', 'major_name' => '日语专业', 'school_name' => '某A高校' ), array( 'course_name' => '马克思概论', 'major_name' => '计算机专业', 'school_name' => '某B高校' ) )</code>
3.希望能得到如下数组:
<code>$course = array( array( 'course_name' => '高等数学', 'major_name' => array('计算机专业','物理专业','日语专业'), 'school_name' => '某A高校' ), array( 'course_name' => '马克思概论', 'major_name' => array('计算机专业'), 'school_name' => '某B高校' ) )</code>
4.小白第一次提问;望能得到答复。小弟不才,被此问题困惑,(没有搜索到很好的答复,so伸手一次)(急急急)
1.此问题主要是PH操作P二维数组的合并;
2.初始数组如下:
<code>$course = array( array( 'course_name' => '高等数学', 'major_name' => '计算机专业', 'school_name' => '某A高校' ), array( 'course_name' => '高等数学', 'major_name' => '物理专业', 'school_name' => '某A高校' ), array( 'course_name' => '高等数学', 'major_name' => '日语专业', 'school_name' => '某A高校' ), array( 'course_name' => '马克思概论', 'major_name' => '计算机专业', 'school_name' => '某B高校' ) )</code>
3.希望能得到如下数组:
<code>$course = array( array( 'course_name' => '高等数学', 'major_name' => array('计算机专业','物理专业','日语专业'), 'school_name' => '某A高校' ), array( 'course_name' => '马克思概论', 'major_name' => array('计算机专业'), 'school_name' => '某B高校' ) )</code>
4.小白第一次提问;望能得到答复。小弟不才,被此问题困惑,(没有搜索到很好的答复,so伸手一次)(急急急)
首先你的一条数据的维度是这样的:
"高校_课程": [专业1, [专业2, 专业3]]
所以要以 高校_课程作为唯一区别
<code>// 上接你的$course数据 $majors = array(); foreach($course as $item){ extract($item); $key = "{$school_name}:{$course_name}"; if(!isset($majors[$key]){ $majors[$key] = array( "course_name" => $course_name, "school_name" => $school_name, "major_name" => array($major_name) ); }else{ // 已存在key记录且major_name未重复, 追加 marjor_name if(!in_array($marjor_name, $majors[$key]['major_name']){ $majors[$key]['major_name'][] = $marjor_name; } } } // 提取数组 $majors = array_values($majors); print_r($majors); // 这就是你要的 </code>
<code>$result = array(); foreach ($course as $val) { if(!isset($result[$val['school_name'].$val['course_name']]['major_name'])) { $result[$val['school_name'].$val['course_name']]['major_name'] = array(); $result[$val['school_name'].$val['course_name']]['course_name']=$val['course_name']; $result[$val['school_name'].$val['course_name']]['school_name']=$val['school_name']; } array_push($result[$val['school_name'].$val['course_name']]['major_name'],$val['major_name']); } var_dump(array_values($result)); // 输出结果如下 array(2) { [0]=> array(3) { ["major_name"]=> array(3) { [0]=> string(15) "计算机专业" [1]=> string(12) "物理专业" [2]=> string(12) "日语专业" } ["course_name"]=> string(12) "高等数学" ["school_name"]=> string(10) "某A高校" } [1]=> array(3) { ["major_name"]=> array(1) { [0]=> string(15) "计算机专业" } ["course_name"]=> string(15) "马克思概论" ["school_name"]=> string(10) "某B高校" } }</code>