<?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都去掉了,我想大数组有重复值时只去掉的小数组里的,重复的保留求大侠们指导,难倒非要遍历数组一个个的去吗?
有经验的说下
$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都去掉了,我想大数组有重复值时只去掉的小数组里的,重复的保留求大侠们指导,难倒非要遍历数组一个个的去吗?
有经验的说下
array_diff() 返回一个数组,该数组包括了所有在 array1 中但是不在任何其它参数数组中的值。注意键名保留不变。
所以,返回的只有cat,$a,$b共有的值一概不返回。
(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
)
我就是想让$array1只去掉一个 “red” 剩下一个,
$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);