我永远不会试图去战胜一个纯傻逼,因为他会用他丰富的经验来打败我...

2月 18

php二维数组根据某个key相同合并数组

起初的原因是一个朋友,问我如下代码能不能把id相同的能不能合并成一个数组

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$a= [
    0=>[
     'id' =>1,
     'name'=>'技术部',
     'job'=>'后台开发'
    ],
    1=>[
     'id' =>1,
     'name'=>'技术部',
     'job'=>'前端开发'
    ],
    2=>[
     'id' =>2,
     'name'=>'设计部',
     'job'=>'UI设计师'
    ],
];

一开始我打算先取出 所有id 放在一个数组中,因为不想用循环所以打算用 array_column() 函数,取出id再去重在当做key使用,结果发现我家里安装的是php5.4的不支持。这个函数5.5才支持。。
于是,我去查了一下数组的手册就又想到个办法,发现实际上,我最终的想法还是哪 id 来做文章,所以我想何不直接循环用取id当key ?
所以代码如下,其实非常的简单。。比我一开始想的判断还简单很多,

1
2
3
4
$res = [];
foreach ($a as $k => $v) {
    $res[$v['id']][] = $v;
}

最终的效果
插图“>

———————————————————————–分割线——————————————————————————————————————–

新需求。说分类,意思就是下面这个样子,其实也很简单。。只要在上面原有的更改一下就行了,
// 部门一
// –职位一
// –职位二
// –职位三
// 部门二
// –职位一
// –职位二

1
2
3
4
foreach ($a as $key => $val) {
       $result[$val['id']]['name']   = $val['name'];
       $result[$val['id']]['job'][]  = $val['job'];
  }

最终的效果

插图“>

发表评论

电子邮件地址不会被公开。 必填项已用*标注