您的位置:首页 > 编程语言 > PHP开发

php 按照相同键值分组合并数组

2019-08-16 18:44 3787 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_41515189/article/details/99683524
//按照相同键值分组合并数组
$arr = [];//定义一个空数组
foreach ($date_info as $key => &$value) {//$date_info为需要合并的数组一
foreach ($setting as $k => $item) {//$setting为需要合并的数组二
if ($value['start'] === $item['start']) {//start为相同的键值字段
$temp = array_merge($value,$item);//合并
$arr[] = $temp;//复制给新的数组
}
}
}
$temp_ids = array_column($arr, 'start');//获取新数组中的start字段   生成仅含有start字段的数组
//判断是否每个数组中都含有start字段
$sub_1 = array_filter($date_info,function($o) use ($temp_ids){//过滤数组一中的元素 start字段
if (!in_array($o['start'], $temp_ids)) {//判断数组一中的start字段是否在数组$temp_ids中
return true;
}
});
$sub_2 = array_filter($setting,function($i) use ($temp_ids){//过滤数组二中的元素 start字段
if (!in_array($i['start'], $temp_ids)) {//判断数组二中的start字段是否在数组$temp_ids中
return true;
}
});
$data= array_merge_recursive($arr,$sub_1,$sub_2);   //合并生成新的数组

1.array_merge
array_merge(array1,array2,array3…):把一个或多个数组合并为一个数组
注释:如果两个或更多个数组元素有相同的键名,则最后的元素会覆盖其他元素

2.array_column
array_column(array,column_key,index_key):返回输入数组中某个单一列的值

3.array_filter
array_filter(array,callbackfunction):用回调函数过滤数组中的值

4.in_array
in_array(search,array,type):搜索数组中是否存在指定的值

5.array_merge_recursive
array_merge_recursive(array1,array2,array3…):把一个或多个数组合并为一个数组
该函数与 array_merge() 函数的区别在于处理两个或更多个数组元素有相同的键名时。array_merge_recursive() 不会进行键名覆盖,而是将多个相同键名的值递归组成一个数组

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: