<?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 )
这个是求差集的我想
$a1=array(0=>"Cat",1=>"Dog",2=>"Horse","Dog");结果还是 Array ( [0] => Cat )
可见diff一下把所有的dog都去掉了,我想大数组有重复值时只去掉的小数组里的,重复的保留求大侠们指导,难倒非要遍历数组一个个的去吗?
有经验的说下

解决方案 »

  1.   

    array_diff()的手册说明:
    array_diff() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变。
    所以,返回的只有cat,$a,$b共有的值一概不返回。
      

  2.   

    array_diff
    (PHP 4 >= 4.0.1, PHP 5)array_diff — 计算数组的差集说明
    array array_diff ( array $array1 , array $array2 [, array $ ... ] )
    array_diff() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变。 
    Example #1 array_diff() 例子<?php
    $array1 = array("a" => "green", "red", "blue", "red");
    $array2 = array("b" => "green", "yellow", "red");
    $result = array_diff($array1, $array2);print_r($result);
    ?> 
    在 $array1 中多次出现的值一样处理,输出结果为: Array
    (
        [1] => blue
    )
      

  3.   


    我就是想让$array1只去掉一个 “red” 剩下一个,
      

  4.   

    array_diff() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变哥们 看清楚了没啊!
      

  5.   

    自己写呗<?php
    $a1=array(0=>"Cat",1=>"Dog",2=>"Horse","cat");
    $a2=array(3=>"Horse",4=>"Dog",5=>"Fish");
    $arr = array_diff($a1,$a2);
    $newarr = array();
    foreach($arr as $k=>$v){
      foreach($a1 as $s=>$t){
        if($v == $t)
        $newarr[$k]=$t;
      }  
    }
    print_r($newarr);