此问题在此处已有答案:
Odd behaviour of array_diff(2个答案)
昨天关门了。
我读了一些教程,但没有一个返回我需要的。
$a = '5,6,';
$b = '6,6,';
$a_array = explode(',',$a);
$b_array = explode(',',$b);
$result = array_diff($b_array,$a_array);
var_dump($result);
但是,当我运行array_diff时,它返回一个空数组。
$result = array_diff($b_array,$a_array);
但我希望它返回6,我的代码中有什么错误?
2条答案
按热度按时间l5tcr1uw1#
这是因为你正在比较b和a。b数组中没有与a中的元素不同的元素。所有相似的元素都不会与相似位置的元素进行比较。它们会与相反数组中的所有元素进行比较。如果你比较a和b,你会在结果数组中返回5值,因为b中没有元素有5。但是当你比较b和a时,每个6在a中找到一对,因此没有发现差异。
wj8zmpe12#
array_diff()不是这样工作的。
array_diff($B_array,$a_array)将返回一个数组,其中的条目存在于$b_array中,但不存在于$a_array中。
所以,在你的例子中,它会检查$a_array是否包含'6'两次(因为$B_array会有两个'6'),每次都会发现是的,$a_array包含'6',因此返回空数组。
更多见解:https://www.w3schools.com/php/func_array_diff.asp