【问题标题】:Using array_diff(), how to get difference from array2 instead of array1?使用array_diff(),如何从array2而不是array1中获取差异?
【发布时间】:2012-10-16 18:43:23
【问题描述】:

我正在尝试像这样使用 array_diff。这是我的两个数组输出:

列表 1 输出

Array ([0] => 0022806 ) 

列表 2 输出

Array ([0] => 0022806 [1] => 0023199 ) 

PHP

$diff = array_diff($list_1, $list_2);

print "DIFF: " . count($diff) ."<br>";
print_r($diff);

输出是:

DIFF: 0
Array ( )

知道我做错了什么吗?为什么0023199没有返回?

【问题讨论】:

  • 如果你颠倒参数怎么办? Returns an array containing all the entries from array1 that are not present in any of the other arrays.

标签: php arrays compare array-difference


【解决方案1】:

array_diff() 中的参数顺序很重要

返回一个数组,其中包含 array1 中所有不属于 存在于任何其他数组中

【讨论】:

  • 有更好的方法吗?我不知道订单可能是什么样子......我只是想了解两者之间的差异。
  • array_diff() 双向循环,然后 array_merge() 结果?这将为您提供一个数组或另一个数组中的条目,但不在两个数组中
【解决方案2】:

试试;

$diff = array_merge(array_diff($list_1, $list_2), array_diff($list_2, $list_1));

print "DIFF: " . count($diff) ."<br>";
print_r($diff);

【讨论】:

    【解决方案3】:

    From the docs:

    返回一个数组,其中包含 array1 中所有非 存在于任何其他数组中。

    如果只想检查是否相同,可以使用$list1 == $list_2

    【讨论】:

      【解决方案4】:

      根据documentation,从第一个数组中减去第二个数组的值。或者,换句话说,从第一个数组开始,然后删除第二个数组中出现的所有值。这将正确地产生一个你在上面看到的空数组

      你可能想玩弄intersection,这可能会帮助你得到你想要的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多