我对此问题很困惑,如何使用array_udiff

时间:2014-01-11 10:44:25

标签: php

$a = array(1,2,3,4,5);
$b = array(1,6,3,4,5);
echo "<pre>";
print_r(array_udiff($a,$b,function($a,$b){
    return ($a === $b)? 0:1;
}));

正如手册所说: 它应该返回一个数组,其中包含任何其他参数中不存在的array1的所有值。 如果只比较两个数组,我认为它就像array_diff() 我希望这会回来:

Array
(
    [0] => 2
)

然而它返回:

Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [4] => 5
)

1 个答案:

答案 0 :(得分:2)

对于array_udiff()的value_compare_func参数,“如果第一个参数被认为分别小于,等于或大于0,则比较函数必须返回小于,等于或大于零的整数。第二个。“

http://us1.php.net/manual/en/function.array-udiff.php

这解决了问题,并返回一个项目为2的数组。

$a = array(1,2,3,4,5);
$b = array(1,6,3,4,5);
echo "<pre>";

print_r(array_udiff($a,$b,function($a,$b){
    if ($a < $b) {
            return -1;
        } elseif ($a > $b) {
            return 1;
        } else {
            return 0;
        };
}));