【问题标题】:How can I detect the differences between two arrays?如何检测两个数组之间的差异?
【发布时间】:2015-11-29 13:47:13
【问题描述】:

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

数组1:

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) {
}

有人知道为什么吗?

【问题讨论】:

标签: php arrays


【解决方案1】:

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

【讨论】:

  • 我已经尝试过这个$result = array_diff_assoc($array1, $array2);,但我仍然得到了输出array(0) { }
【解决方案2】:

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

这是对我有用的代码:

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

【讨论】:

    猜你喜欢
    • 2019-05-02
    • 2017-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-19
    • 2021-04-27
    • 2013-06-18
    • 2012-12-20
    相关资源
    最近更新 更多