php - 按关联值合并多维数组
问题描述
我搜索了很多 SOF 线程,似乎没有人坚持我的问题。什么是有线的,因为这应该是一个很好讨论的问题:)
也许我在寻找错误的东西......
设想:
我有 2 个数组
$a = [
['id' => 5, 'name' => 'bruce'],
['id' => 7, 'name' => 'wayne']
];
// 2 elements
和
$b = [
['id' => 6, 'name' => 'chuck'],
['id' => 8, 'name' => 'norris'],
['id' => 7, 'name' => 'wayne'] //also exists in array $a
];
// 3 elements
我的目标是
$c = [
['id' => 6, 'name' => 'chuck'],
['id' => 8, 'name' => 'norris'],
['id' => 7, 'name' => 'wayne'],
['id' => 5, 'name' => 'bruce']
];
// 4 elements (no duplicates)
我真的不在乎数组内部的顺序,但我想将两者合并为一个,而不会重复。
我试过array_merge和array_merge_recursive。没有人工作。可能是因为函数不知道标识每个条目的标识符。有没有简单的解决方案,还是我真的必须为此创建一个自己的方法/函数?
也许有一个我可以使用的闭包?
解决方案
您可以使用非常简单的 PHP 内置函数来做到这一点
$c = array_unique(array_merge($a,$b), SORT_REGULAR);
print_r( $c )
print_r 的输出是
Array
(
[0] => Array
(
[id] => 5
[name] => bruce
)
[1] => Array
(
[id] => 7
[name] => wayne
)
[2] => Array
(
[id] => 6
[name] => chuck
)
[3] => Array
(
[id] => 8
[name] => norris
)
)
推荐阅读
- javascript - 接收用ajax发布的数据
- python - 按单词拆分字符串
- laravel - 如何使用 laravel 5.7 在数据选择器上禁用公共假期
- excel - VBA循环遍历所有工作表并清除单元格内容
- python - 线性回归预测以列表形式提供多个特征
- wcf - 如何避免使用 WCF 自定义绑定和自定义验证器对每个服务调用进行证书验证
- sql - 如果字符串在字段文本中,则获取字符串的另一部分
- c# - C#在子类中重新定义子方法而不在父类中重新定义调用方法
- vue.js - 在 Vue Konva 中绘制网格
- excel - Excel - 如何在 Excel IF 语句中添加单词