日期:2014-05-16  浏览次数:20466 次

array_udiff的困惑
今天看书,书中有一个例子用到了array_udiff,查了下手册,经过测试,还是对其一知半解.
$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;
}));

我希望的得到的结果:
Array
(
    [0] => 2
)

实际结果
Array
(
    [0] => 1
    [1] => 2
    [2] => 3
    [4] => 5
)

------解决方案--------------------
总是要按规矩来
array_udiff($a, $b, function($a, $b){
  if($a == $b) return 0;
  return $a > $b ? 1 : -1;
})

如果认为第一个参数小于,等于,或大于第二个参数时必须分别返回一个小于零,等于零,或大于零的整数。