php array_udiff的用法

$a1=array("a"=>"red","b"=>"green","c"=>"blue");
$a2=array("a"=>"blue","b"=>"black","e"=>"blue");

$a1=array("a"=>"4","b"=>"5","c"=>"6");
$a2=array("a"=>"5","b"=>"7","e"=>"9");
$test=array_udiff($a1, $a2, function($a, $b){
    var_dump($a);
    var_dump($b);
    var_dump($a>$b);
    if($a>$b){
        return 1;
    }else{
        return 0;
    }
});
var_dump($test);

clipboard.png

无论是大于还是小于还是等于都没结果
w3c的示例看的脑瓜子疼

阅读 2.4k
3 个回答

都是字符,你用> 判断肯定不行啊

要么 === 要不 !=

return 0;
改为
return -1;

$a1=array("a"=>"4","b"=>"5","c"=>"6");
$a2=array("a"=>"5","b"=>"7","e"=>"9");
$test=array_udiff($a1, $a2, function($a, $b){
    var_dump($a);
    var_dump($b);
    if($a == $b)
    {
        return  0;
    }
    if($a>$b){
        return 1;
    }else{
        return -1;
    }
});
var_dump($test);

该函数必须根据实际情况返回 0, 1, -1 这三种值,才能正确计算出差集
虽然我也不懂 为什么传入的$a $b 输出那么奇怪

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题