php - Merge/combine 2 arrays with a common key
问题描述
I have 2 arrays
$firstarray = [ ['name'='a', 'price'=1],['name'='b', 'price'=2],... ]
$secondarray = [ ['name'='b', 'year'=1999],['name'='a', 'year'=2000],... ]
how do I combine the together based on the name to result
$resultingarry = [ ['name'='a', 'year'=2000, price'=1],....]
I tried array_merge_recursive and array_merge_recursive_distinct, but these are dependent on the key so the order will always be off.
Thanks in advance
解决方案
我不知道可以做到这一点的 PHP 函数(也不是 laravel 函数)。虽然有一些循环,但它非常简单:
$firstarray = [ ['name'=>'a', 'price'=>1],['name'=>'b', 'price'=>2],];
$secondarray = [ ['name'=>'b', 'year'=>1999],['name'=>'a', 'year'=>2000],];
$resultingarray = [];
foreach ($firstarray as $entry) {
// find entry with same "name" in second array
foreach ($secondarray as $secondentry) {
if ($secondentry['name'] == $entry['name']) {
$resultingarray[] = array_merge($entry, $secondentry);
continue 2;
}
}
}
var_dump($resultingarray);
结果是:
array(2) {
[0]=>
array(3) {
["name"]=>
string(1) "a"
["price"]=>
int(1)
["year"]=>
int(2000)
}
[1]=>
array(3) {
["name"]=>
string(1) "b"
["price"]=>
int(2)
["year"]=>
int(1999)
}
}
请注意,这只会合并第一个“匹配”(第二个数组中的条目与name
第一个数组中的值相同)。
推荐阅读
- layer - 图层和子图层
- java - 如何一次生成构造函数、getter、setter、equals&hashcode和toString?
- mysql - sqoop GENERIC_JDBC_CONNECTOR_0024
- node.js - 我们如何使用 vhost 和 nodejs 添加子域 dynamicllay
- python - RabbitMQ(aio-pika) ConnectionResetError: [Errno 104] Connection reset by peer
- bash - Bash Wait 命令是否支持 -n 选项?
- kubernetes - 为什么 nodegroup 不扩展以在 EKS 中分配新 pod?
- javascript - ajax请求的for循环如何超时
- python - Selenium 找不到输入框
- c++ - 根据偏好使用 Uncrustify 格式化类