两个数组
$a1=Array ( [0] => 3979953540 [1] => 2534670983 [2] => 2941686393 [3] => 4332391923 [4] => 5014015371 [5] => 1557532655 [6] => 2746885203 [7] => 2746885203 [8] => 2746885203 [9] => 2746885203 [10] => 2746885203 [11] => 2746885203 [12] => 2746885203 [13] => 2746885203 [14] => 2746885203 [15] => 2746885203 [16] => 2746885203 [17] => 2746885203 [18] => 3696488675 [19] => 2880436052 );
$a2=Array ( [0] => 3979953540 [1] => 4332391923 [2] => 3696488675 [3] => 2880436052 [4] => 2534670983 [5] => 2746885203 [6] => 5014015371 [7] => 1557532655 );
$a2中永远不会出现$a1中没有的值,我想获得两个数组的差值,也就是以$a1为基础,得到在$a1中有但在$a2中没有的值,只要键值。上面的数组可能直接运行不太对,但在程序中全部是用explode分割成的,我只是将分割的结果print_r了一下直接拷过来的。我原来是想用$a3=array_diff($a1,$a2);来得到的,但是好象不行,$a3总是空的。

解决方案 »

  1.   

    $a3 = array_diff($a1,$a2);
    得到
    Array
    (
        [2] => 2941686393
        [9] =>  2746885203
    )
    结果是正确的
      

  2.   

    是啊,array_diff 这个可以的啊,<?php
    $array1 = array("a" => "green", "red", "blue", "red");
    $array2 = array("b" => "green", "yellow", "red");
    $result = array_diff($array1, $array2);print_r($result);
    ?>Multiple occurrences in $array1 are all treated the same way. This will output : copy to clipboard
    Array
    (
       [1] => blue
    )
      

  3.   

    array_diff函数,对两个数组进行比较,得出一个取交集的数组!
      

  4.   

    array_diff() 函数返回两个数组的差集数组。该数组包括了所有在被比较的数组中,但是不在任何其他参数数组中的键值。
    <?php
    $a1=array(0=>"Cat",1=>"Dog",2=>"Horse");
    $a2=array(3=>"Horse",4=>"Dog",5=>"Fish");
    print_r(array_diff($a1,$a2));
    ?>输出:Array ( [0] => Cat )
      

  5.   

    如果你不用array_diff,那么你就用以下的算法吧
    $narr=array();
    For($i=0;$i<count($a1);$i++){
    IF(In_Array($a1[$i],$a2)){
    Continue;
    }Else{
    $narr[]=$a1[$i];
    }
    }
    Print_r ($narr);
      

  6.   

    array_diff是可行的,也许楼主没有认真测试吧!
      

  7.   

    <?php
    $a1=Array ("3979953540","2534670983","2941686393","4332391923" ,"5014015371", "1557532655","2746885203" ,"2746885203","2746885203" ,"2746885203","2746885203"); $a2=Array (" 3979953540" ,"4332391923" ,"3696488675" ,"2880436052" ,"2534670983 " ,"2746885203","5014015371" ,"1557532655" ); 
    print_r(array_diff($a1,$a2));
    ?>