我很难理解它是如何array_udiff
工作的。
根据文档:
array_udiff ($array1, $array2, data_compare_func)
[...]
data_compare_func
如果第一个参数分别被认为小于、等于或大于第二个参数,则函数必须返回一个小于、等于或大于零的整数。
所以考虑这个功能:
function please_compare($a, $b) {
return $a !== $b;
};
如果 $a 等于 $b,该方法将返回 0,否则返回 1(因为this)。
(这里没有返回-1,我觉得解释来自那里,但我可以比较值不同,而不是一个大于另一个。)
array_udiff
有人可以在以下代码段中解释我的行为吗?我还包括了 的输出array_diff
,这实际上是我所期望的行为?
$array1 = array('a', 'b', 'c', 'd');
$array2 = array('a', 'b', 'c');
print_r(array_udiff($array1, $array2, 'please_compare'));
/* Returns:
Array
(
[0] => a
[1] => b
[3] => d
)
*/
print_r(array_diff($array1, $array2));
/* Returns:
Array
(
[3] => d
)
*/