PHP实现一个二维数组的合并

查看:838
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆