简体   繁体   English

通过键合并两个数组

[英]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"
  }
}

https://3v4l.org/EcgFh https://3v4l.org/EcgFh

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM