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


PHP Compare two multidimensional arrays by key and value

我正忙于学习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)

由此,还计算出值差。

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

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;
}