如何检测两个阵列之间的差异?

时间:2015-11-29 13:47:13

标签: php arrays

我有两个数组,我想比较一下。

ARRAY1:

array(4) {
  ["123"]=>
  array(5) {
    ["animal"]=>
    string(2) "cat"
    ["name"]=>
    string(4) "fred"
  }
  ["345"]=>
  array(5) {
    ["animal"]=>
    string(3) "dog"
    ["name"]=>
    string(4) "alan"
  }
  ["order"]=>
  string(2) "12"
}

数组2:

   array(4) {
      ["123"]=>
      array(5) {
        ["animal"]=>
        string(2) "cat"
        ["name"]=>
        string(4) "fred"
      }
      ["345"]=>
      array(5) {
        ["animal"]=>
        string(3) "fox"
        ["name"]=>
        string(4) "tom"
      }
      ["order"]=>
      string(2) "12"
    }

我将它们与array_diff进行比较:

$result = array_diff($array1, $array2);

但如果我得到var_dump $ result,我会得到以下输出:

array(0) {
}

有谁知道为什么?

2 个答案:

答案 0 :(得分:0)

对于关联数组,您应该使用array_diff_assoc。如果需要,另请参阅用户提供的有关如何递归执行此操作的说明。

答案 1 :(得分:0)

在sinaza的帮助下,我发现没有显示任何差异,因为array_diff与多维数组的工作方式不同。

这是代码,对我有用:

foreach ($array1 as $k1 => $v1) {
   if (array_diff($array2[$k1], $array1[$k1])){
      $result[$k1] = array_diff($array2[$k1], $array1[$k1]);
   }
}