php 二维数组根据某个字段相同就合并

今天遇到一个需求就是,二维数组根据某个字段排序..现在代码有了..我就是搞不懂为什么就会那样做.. 因为按照我的理解.. 最起码要做一步判断的..求各位dalao..解答一下~~

<?php
//原数组
$a= [
    0=>[
     'id' =>1,
     'name'=>'技术部',
     'job'=>'后台开发'
    ],
    1=>[
     'id' =>1,
     'name'=>'技术部',
     'job'=>'前端开发'
    ],
    2=>[
     'id' =>2,
     'name'=>'设计部',
     'job'=>'UI设计师'
    ],
];

echo '<pre>';
//代码
$res = [];
foreach ($a as $k => $v) {
    $res[$v['id']][] = $v;
}

返回之后的结果:

clipboard.png

阅读 7.4k
3 个回答

我知道为什么了。因为每次循环里面的数组。使用id作为key值。。php数组里面,如果key项目则不会创建新的数组,如果不存在则回创建新数组。所以,就可以实现上面的效果。。感觉大家的回答

判断的话你想要怎么判断呢

数组的关键就在于键的唯一性

需求是如果相同就合并到一个数组,这就意味着一维数组上是唯一的。

通过想合并的字段,将它作为数组的键,逐一向里追加就行了

你写的代码不是排序的代码,它就是把相同的id放入一个数组里,
要排序就得用冒泡排序、选择排序、插入排序等等排序算法

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏