多维数组的数组差异

时间:2014-08-11 16:41:18

标签: php multidimensional-array

我有两个数组

$array1 = array
(
    array('A',0),
    array('B',0),
    array('C',0),
    array('D',0),
    array('E',0),
    array('F',0),
)

$array2 = array
(
    array('A',5),
    array('B',6),
    array('C',10),
    array('F',23),
)

$ array2有时会改变A键存在或不存在。它适用于所有键。

我想创建一个新数组或将$ array1中的数组值替换为

$array1 = array
(
    array('A',5),
    array('B',6),
    array('C',10),
    array('D',0),
    array('E',0),
    array('F',23),
)

2 个答案:

答案 0 :(得分:0)

尝试以下内容

if(count($array1) > count($array2)){
    $tempArr1 = $array1;
    $tempArr2 = $array2;
}else{
    $tempArr1 = $array2;
    $tempArr2 = $array1;
}
$newArr = array();

foreach($tempArr1 as $values){
    $a = $values[0]; $n = $values[1];
    foreach($tempArr2 as $key=>$val){
        if($val[0] == $a){
            $n = ($val[1] > $n) ? $val[1] : $n;
            unset($tempArr2[$key]);
        }
    }
    $newArr[] = array($a, $n);
}
print_r($newArr);

答案 1 :(得分:0)

$array1 = array (
  array('A',0),
  array('B',0),
  array('C',0),
  array('D',0),
  array('E',0),
  array('F',0),
);

$array2 = array (
  array('A',5),
  array('B',6),
  array('C',10),
  array('F',23),
);

foreach( $array2 as $itemKey2 => $itemVal2 ) {
  $found = false; 
  foreach( $array1 as $itemKey1 => $itemVal1   ) {
    if( $itemVal1[0] == $itemVal2[0] ) {
      $found = true;
      $array1[$itemKey1][1] = $itemVal2[1];
      break;
    }
  }
  if( !$found )
    $array1[] = $item2;
}

echo var_export( $array1, true );

回想起来,这种情况似乎不必要地复杂化。除非其他东西确实需要这种结构,否则请使用类似的东西:

$array1 = array (
  'A' => 0,
  'B' => 0,
  'C' => 0,
  'D' => 0,
  'E' => 0,
  'F' => 0
);

$array2 = array (
  'A' => 5,
  'B' => 6,
  'C' => 10,
  'F' => 23
);

foreach( $array2 as $key => $val ) {
    $array1[$key] = $val;
}