PHP实现一个二维数组的合并
本文介绍了PHP实现一个二维数组的合并的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
1.此问题主要是PH操作P二维数组的合并;
2.初始数组如下:
$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高校'
)
)
3.希望能得到如下数组:
$course = array(
array(
'course_name' => '高等数学',
'major_name' => array('计算机专业','物理专业','日语专业'),
'school_name' => '某A高校'
),
array(
'course_name' => '马克思概论',
'major_name' => array('计算机专业'),
'school_name' => '某B高校'
)
)
4.小白第一次提问;望能得到答复。小弟不才,被此问题困惑,(没有搜索到很好的答复,so伸手一次)(急急急)
解决方案
首先你的一条数据的维度是这样的:
"高校_课程": [专业1, [专业2, 专业3]]
所以要以 高校_课程作为唯一区别
// 上接你的$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); // 这就是你要的
这篇关于PHP实现一个二维数组的合并的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文