我认为您错过了返回值部分。
返回一个数组,其中包含 array1 中不存在于任何其他数组中的所有条目。
数组键用于比较。
文本中缺少的是仅通过关联方式进行比较。这意味着任何自动声明或用户定义的数字键都被键入为字符串而不是整数。
So with
$one = array(a,b,c,'hot'=>d); // d has no match and will be returned as array and go to the function alone
$two = array(a,b,c,d,e,f); //
因为 $one hot=>d 与关联级别上的 $two 0=>d 不匹配,因此返回 $one hot=>d。
由于 PHP 字符串和整数数据类型比较的怪癖,可以使用用户定义的函数通过使用更强的比较操作(如 ===)来增强比较。
这在类型不明确的情况下会有所帮助 '0'=>d 和 0=>d 可能看起来相似,但直到您在代码中这样说为止。
幸运的是,PHP7 中的类型提示让我们摆脱了这种奇怪的构造和不明确的文档。
我从我的评论中添加这一点,因为它涉及您对哪种 php 结构最适合您的情况的理解。我的评论:
我对此不太确定,因为 if($a != $b) { 在他们的代码中是
问题。因为他们在应该使用平等的时候错误地使用了平等
使用相同的运算符 !==。他们正在使用数字键
为关联键设计的构造。他们可能也是
不知道 array_udiff 哪个更适合所涉及的数据