[英]Merge two arrays by keys
I have two arrays 我有两个数组
$array_1 = array(
array('name' => 'Jon', 'user' => 'Apple'),
array('name' => 'Dave', 'user' => 'Windows')
);
$array_2 = array(
array('name' => 'Jon', 'user' => ''),
array('name' => 'Jonson', 'user' => ''),
array('name' => 'Dave', 'user' => '')
);
I need to get this: 我需要得到这个:
$array_result = array(
array('name' => 'Jon', 'user' => 'Apple'),
array('name' => 'Jonson', 'user' => ''),
array('name' => 'Dave', 'user' => 'Windows')
);
I have tried array_merge()
and have tried to filter arrays array_filter()
but Can't find solution. 我试过
array_merge()
并尝试过滤数组array_filter()
但找不到解决方案。 I'll be very thankful for the suggestion. 我会很感激这个建议。
You can make your arrays associative with array_columns third argument then use array_replace_recursive to get the change you want. 您可以使数组与array_columns第三个参数关联,然后使用array_replace_recursive获得所需的更改。
The optionally use array_values to get an indexed array again. (可选)使用array_values再次获取索引数组。
$array_1 = array_column($array_1, Null, "name");
$array_2 = array_column($array_2, Null, "name");
$result = array_values(array_replace_recursive($array_2, $array_1));
var_dump($result);
Output: 输出:
array(3) {
[0]=>
array(2) {
["name"]=>
string(3) "Jon"
["user"]=>
string(5) "Apple"
}
[1]=>
array(2) {
["name"]=>
string(6) "Jonson"
["user"]=>
string(0) ""
}
[2]=>
array(2) {
["name"]=>
string(4) "Dave"
["user"]=>
string(7) "Windows"
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.