请问函数func5里面的
if($v1===$v2) return 0;
    if($v1>$v2) return 1;
    if($v1<$v2) return -1;
是什么意思?
为什么$v1===v2是返回0?而不是返回1,array_uintersect是一个返回数组元素值的交集函数function dump($arr){
    echo "<pre>";
    print_r($arr);
}  
$array1=array("a1"=>"a","b"=>"b","c"=>"c");
$array2=array("a"=>"a1","b"=>"b","c"=>"c");
$array3=array_uintersect($array1,$array2,"func5"); 
function func5($v1,$v2){
    if($v1===$v2) return 0;
    if($v1>$v2) return 1;
    if($v1<$v2) return -1;
}
dump($array3);

解决方案 »

  1.   

    if($v1===$v2) return 0;我不知道你 $v1 和 $v2 是什么值如果 2个 变量的 值 和 类型都相等的话。 返回的 是 真.. 真的话就执行 return 0
    例如 $v1 = 1  $v2 = 1 都是数值类型 就 返回真.
         $v1 = '1' $v2 = 1 $v1 是字符类型 $v2 是数值类型 就返回假. 
      

  2.   

    貌似array_uintersect函数对回调的要求就是那样的。
      

  3.   

    if($v1===$v2) return 0;
      if($v1>$v2) return 1;
      if($v1<$v2) return -1;
    是什么意思?
    --------------------------------和c语言中字符串比较函数一个规则。
    如果两个值相等就返回0.
    a大于b,就返回1
    否则返回-1这样设计也是很合理的。
    func5函数就是比较函数。返回的是两个值的大小关系。
      

  4.   

    array_uintersect($array1,$array2,"func5");
    此比较是通过用户提供的回调函数来进行的。如果认为第一个参数小于,等于,或大于第二个参数时必须分别返回一个小于零,等于零,或大于零的整数。
    function func5($v1,$v2){
      if($v1===$v2) return 0;//因此,等于的话返回0
      if($v1>$v2) return 1;//返回大于0的整数
      if($v1<$v2) return -1;//返回小于0的整数
    }
    你也可以将func5()写成
    function func5($v1,$v2){
      if($v1===$v2) return 0;
      if($v1>$v2) return 2;
      if($v1<$v2) return -3;
    }
      

  5.   


    function dump($arr){
      echo "<pre>";
      print_r($arr);
    }  
    $array1=array("a1"=>"a","b"=>"b","c"=>"c");
    $array2=array("a"=>"a1","b"=>"b","c"=>"c");
    $array3=array_uintersect($array1,$array2,"func5"); 
    function func5($v1,$v2){
      if($v1===$v2) return 0;
      if($v1>$v2) return 2;
      if($v1<$v2) return -3;
    }
    dump($array3);