混合多维数组的值

时间:2014-06-30 12:19:25

标签: php

我有一个数组

array (
     array (
      'id_product' => '10',
      'id_supplier' => '0'
     ),
     array (
      'id_product' => '11',
      'id_supplier' => '0'
     )
)

和第二个我要与第一个合并

array (
     array (
      'id_product' => '10',
      'date' => '12/02/2014'
     )
)

我需要

array (
     array (
      'id_product' => '10',
      'id_supplier' => '0',
      'date' => '12/02/2014'
     ),
     array (
      'id_product' => '11',
      'id_supplier' => '0'
     )
)

我知道我可以在一个中使用foreach并在第二个中查找现有值但是最有效的方法是什么?是否有这种混合的PHP功能?我查看了array_merge(),但似乎并不是我需要的

3 个答案:

答案 0 :(得分:1)

在deceze评论之后,我最终使用了:

foreach ($array1 as $key => $value1) {
    foreach ($array2 as $key2 => $value2)
        if ($value1['id_product'] == $value2['id_product'])
        {
            $array1[$key] = array_merge($array1[$key], $array2[$key2]);
        }
}

这个函数给了我相同的结果,感谢TBI,但是只有当我需要根据它们在$ a和$ b中的位置合并数组时,女巫才不是这样的

$result = array_replace_recursive(array1, array2)

答案 1 :(得分:0)

以下是完整的工作代码: -

$a = array (
     array (
      'id_product' => '10',
      'id_supplier' => '0'
     ),
     array (
      'id_product' => '11',
      'id_supplier' => '0'
     )
);

$b = array (
     array (
      'id_product' => '10',
      'date' => '12/02/2014'
     )
);
function my_array_merge(&$array1, &$array2) {
    $result = Array();
    foreach($array1 as $key => &$value) {
        $a++;
        echo $a;
        if(!empty($array2[$key]) && !empty($array2[$key])){
            $result[$key] = array_merge($value, $array2[$key]);
        }
        if(empty($array2[$key])){
            $result[$key] = $value;
        }
    }
    return $result;
}
$array = my_array_merge($a, $b);

echo "<pre>";
print_r($array);

答案 2 :(得分:0)

试试这个 -

$a = array (
 array (
  'id_product' => '10',
  'id_supplier' => '0'
 ),
 array (
  'id_product' => '11',
  'id_supplier' => '0'
 ));

$b = array (
 array (
  'id_product' => '10',
  'date' => '12/02/2014'
 ));

我使用了array_merge_recursive函数来获取组合数组: -

$c = array_replace_recursive($a, $b);

$ c 是您要展示的结果。