PHP方法array_uintersect()无法正常工作

时间:2017-07-20 05:51:45

标签: php

array_uintersect (array1,array2,function)方法应返回2个数组的交集,但它在我的代码中无法正常工作。

代码:         

function myComparator($a,$b){

    if ($a==$b){
        echo "$a == $b".PHP_EOL;
        return 0;
    }
        echo "$a != $b".PHP_EOL;
        return -1;
}

$array1 = array('A','B','C');
$array2 = array('1','2','A');

$array3 = array_uintersect($array1,$array2,"myComparator");

foreach ($array3 as $key => $value) {
    echo "$key : $value".PHP_EOL;
}

?>

控制台打印:

A != B
B != C
1 != 2
2 != A
A != 1
B != 1
C != 1
[Finished in 0.2s]

通常, $ array3 应该包含元素“A”,但实际上是一个空数组。 这是一个错误还是我错误地理解了这个方法?

PHP版本:7.0.10

提前谢谢你:)

1 个答案:

答案 0 :(得分:2)

因为你的比较器只返回0或-1,而它也应该返回值1(否则array_uintersect会认为数组已排序,即使它们不是这样)。

将比较更改为:

if ($a==$b) {
    return 0;
} else if ($a > $b) {
    return 1;
} else {
    return -1;
}

请参阅this code at 3v4l.org