array_diff不返回。为什么?

时间:2018-12-26 03:31:00

标签: php arrays

我已经在这里阅读了一些教程,但是没有一个返回我需要的东西。我有两个数组。

$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 个答案:

答案 0 :(得分:1)

这是因为您正在将b与a进行比较。 b数组不包含与a中的元素不同的元素。没有将所有相似的元素与相似位置的元素进行比较。将它们与相反数组中的所有元素进行比较。如果将a与b进行比较,则将在结果数组中返回5值,因为b中没有元素包含5。但是,当将b与a进行比较时,每个6在a中都找到了一对,因此没有区别。 >

$a = '5,6,'; 
$b = '6,6,'; 
$a_array = explode(',',$a); 
$b_array = explode(',',$b);
$result = array_diff($a_array,$b_array); 
var_dump($result);

答案 1 :(得分:0)

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