php 查找两个以逗号分隔的分解字符串之间的差异[重复]

cwtwac6a  于 2023-04-04  发布在  PHP
关注(0)|答案(2)|浏览(140)

此问题在此处已有答案

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,我的代码中有什么错误?

l5tcr1uw

l5tcr1uw1#

这是因为你正在比较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);
wj8zmpe1

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

相关问题