dongnai8013 2018-07-25 15:49
浏览 24
已采纳

如何使用foreach引用组合array1来匹配array2的id

I have two arrays. array1 contains details of users and array2 has personal details. How do I merge array2 into array1 by using foreach reference?

$array1 = [
['id'=> 1,'name'=>'John Sena', 'lastname'=>'Jonn'],
['id'=> 2,'name'=>'Rock', 'lastname'=>'Rock Sena']
];

$array2 = [
['id'=>1, 'company'=>'Warner Brother'], ['id'=>2, 'company'=>'Metro'],['id'=>'1', 'Address'=>'USA']
];
  • 写回答

2条回答 默认 最新

  • dongliao6777 2018-07-25 17:25
    关注

    You might use array_merge and in the second foreach use pass by reference for &$a1

    $array1 = [
        ['id'=> 1,'name'=>'John Sena', 'lastname'=>'Jonn'],
        ['id'=> 2,'name'=>'Rock', 'lastname'=>'Rock Sena']
    ];
    
    $array2 = [
        ['id'=>1, 'company'=>'Warner Brother'], ['id'=>2, 'company'=>'Metro'],['id'=>'1', 'Address'=>'USA']
    ];
    
    foreach ($array2 as $a2) {
        foreach ($array1 as &$a1) {
            if ($a2['id'] == $a1['id']) {
                $a1 = array_merge($a1, $a2);
            }
        }
    }
    
    print_r($array1);
    

    Result:

    Array
    (
        [0] => Array
            (
                [id] => 1
                [name] => John Sena
                [lastname] => Jonn
                [company] => Warner Brother
                [Address] => USA
            )
    
        [1] => Array
            (
                [id] => 2
                [name] => Rock
                [lastname] => Rock Sena
                [company] => Metro
            )
    
    )
    

    Demo

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?