PHP按键和值比较两个多维数组

时间:2016-01-13 14:15:23

标签: php arrays multidimensional-array

我正忙着学习PHP,并且正在寻找一种通过键和值比较两个关联数组的方法,然后找出两者之间的差异。

如果我有一个关联数组:

array (size=2)
  'x15z' => int '12' (length=2)
  'x16z' => int '3' (length=1)

另一个有以下内容:

array (size=1)
  'x15z' => int 1

我试图找到两个关联数组之间的区别,我正在尝试使用array_diff_assoc($ array1,$ array2),这适用于一个元素在另一个元素中丢失的情况但是在上述实例中,区别是

array (size=2)
  'x15z' => int '12' (length=2)
  'x16z' => int '3' (length=1)

与我正在寻找的相反:

array (size=2)
  'x15z' => int '11' (length=2)
  'x16z' => int '3' (length=1)

由此也计算了价值差异。

是否有任何逻辑方法可以根据键和值来计算两个关联数组的差异?谢谢!

1 个答案:

答案 0 :(得分:3)

function calculateDifference($array1, $array2){
  $difference = array();
  foreach($array1 as $key => $value){
    if(isset($array2[$key])){
      $difference[$key] = abs($array1[$key] - $array2[$key]);
    }else{
      $difference[$key] = $value;
    }
  }
  foreach($array2 as $key => $value){
    if(isset($array1[$key])){
      $difference[$key] = abs($array1[$key] - $array2[$key]);
    }else{
      $difference[$key] = $value;
    }
  }
  return $difference;
}