如果特定键值在两个数组中都匹配,则插入新键

时间:2018-05-15 06:13:28

标签: php

$array1 = array(
                 [0] => array(
                          'id' => 'gdye6378399sjwui39',
                          'name' => 'Plate 1'
                        ),
                 [1] => array(
                          'id' => 'xyz6378399sjwui39',
                          'name' => 'Plate 2'
                        ),
                 [2] => array(
                          'id' => 'tr2e6378399sjwui39',
                          'name' => 'Plate 3'
                        )
             )

和另一个数组

$array2 =  array(
                 [0] => array(
                          'id' => 'gdye6378399sjwui39',
                          'ETA' => '8'
                        ),
                 [1] => array(
                          'id' => 'tr2e6378399sjwui39',
                          'ETA' => '9'
                        )
                 [2] => array(
                          'id' => 'xyz6378399sjwui39',
                          'ETA' => '5'
                        )

             )

我想比较两个数组。我是这样做的: -

if(!empty($array2))
{
   foreach($array1 as $ck => $cl)
   {
       foreach($array12 as $ued){
       if($cl['id'] == $ued['id'])
       {
          $array1[$ck]['ETA'] = $ued['ETA'];
          break;
       }
    }
}

有什么其他更好的方法可以做到这一点?两个数组的顺序可能会有所不同,大小也是如此。

1 个答案:

答案 0 :(得分:0)

如果您按ID(使用array_column())索引第二个数组,则可以在不使用内部foreach()的情况下离开,只使用isset() ...

$match = array_column($array2, null, 'id');
foreach ( $array1 as $ck=>$cl)   {
    if ( isset($match[$cl['id']]) )    {
        $array1[$ck]['ETA'] = $match[$cl['id']]['ETA'];
    }
}

print_r($array1);