PHP比较两个多维数组并返回差异

时间:2014-02-23 14:46:38

标签: php arrays

我有一个来自产品Feed的2个非常大的数组,我想比较两者并返回不匹配的字段。

我尝试过使用array_diff(),但它不适用于多维数组。

是否有可用的功能?

1 个答案:

答案 0 :(得分:2)

array_diff的评论中实现了功能。

function arrayRecursiveDiff($aArray1, $aArray2) {
  $aReturn = array();

  foreach ($aArray1 as $mKey => $mValue) {
    if (array_key_exists($mKey, $aArray2)) {
      if (is_array($mValue)) {
        $aRecursiveDiff = arrayRecursiveDiff($mValue, $aArray2[$mKey]);
        if (count($aRecursiveDiff)) { $aReturn[$mKey] = $aRecursiveDiff; }
      } else {
        if ($mValue != $aArray2[$mKey]) {
          $aReturn[$mKey] = $mValue;
        }
      }
    } else {
      $aReturn[$mKey] = $mValue;
    }
  }
  return $aReturn;
}