PHP输出数组中重名的元素的几种处理方法,需要的朋友可以参考下
1.可以直接用php的内置函数array_intersect()?
array array_intersect ( array $array1 , array $array2 [, array $ ... ] )?
array_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。?
代码:?
代码如下:?
$array1=array("a"=> "green", "red", "blue");?
$array2=array("b"=> "green", "yellow", "red");?
$result=array_intersect($array1, $array2);?
?>?
输出结果:?
Array( [a]=> green [0]=> red)?
2.也可以自己写一个算法:?
代码如下:?
function my_array_same($a){?
$b=array_unique($a);?
$r=array_diff_key($a,$b);?
echo "
";?
$k=var_dump(array_unique($r));? return $k;? }? $a=array("red", "green", "pink", "red", "yellow","pink", "red");? $r=my_array_same($a);? var_dump(array_unique($r));? ?>? 输出结果:? array(2) {? [3]=>? string(3) "red"? [5]=>? string(4) "pink"? }? 3.还可以这么写:? 代码如下:? function my_array_intersect($arr1,$arr2){? for($i=0;$i
$temp[]=$arr1[$i];? }? for($i=0;$i
$temp[]=$arr2[$i];? }? sort($temp);? $get=array();? for($i=0;$i
if($temp[$i]==$temp[$i+1])? $get[]=$temp[$i];? }? return $get;? }? $array1=array("green", "red", "blue");? $array2=array("green", "yellow", "red");? echo "";? print_r(my_array_intersect($array1, $array2));? echo "";? ?>? 如果是一维的数组,第三种算法比第一种快点.上述算法都适用于一维的数组,那么多维数组怎么查找相同的元素呢?? 思路:可以把多维的数组转化成一维的数组,然后再利用上述算法输出。? 代码:? 代码如下:? function toarr($arr){ //对数组进行递归,以字符串形式返回? foreach ($arr as $k=>$v){? if (!is_array($v)) {? $str.=$v." ";? }? else{? $str.=toarr($v);? }? }? return $str;? }? 上式把多维数组转化成字符串,然后利用expode函数转化成一维数组即可。?