PHP输出数组中重名的元素的几种处理方法

PHP输出数组中重名的元素的几种处理方法,需要的朋友可以参考下

1.可以直接用php的内置函数array_intersect() 
array array_intersect ( array $array1 , array $array2 [, array $ ... ] ) 
array_intersect() 返回一个数组,该数组包含了所有在 array1 中也同时出现在所有其它参数数组中的值。注意键名保留不变。 
代码: 
代码如下: 
<?php 
$array1 = array("a" => "green", "red", "blue"); 
$array2 = array("b" => "green", "yellow", "red"); 
$result = array_intersect($array1, $array2); 
?> 

输出结果: 
Array( [a] => green [0] => red) 
2.也可以自己写一个算法: 
代码如下: 
<?php 
function my_array_same($a){ 
$b = array_ unique($a); 
$r = array_diff_key($a,$b); 
echo "<pre>"; 
$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.还可以这么写: 
代码如下: 
<?php 
function my_array_intersect($arr1,$arr2){ 
for($i=0;$i<count($arr1);$i++){ 
$temp[]=$arr1[$i]; 

for($i=0;$i<count($arr1);$i++){ 
$temp[]=$arr2[$i]; 

sort($temp); 
$get=array(); 
for($i=0;$i<count($temp);$i++){ 
if($temp[$i]==$temp[$i+1]) 
$get[]=$temp[$i]; 

return $get; 

$array1 = array("green", "red", "blue"); 
$array2 = array("green", "yellow", "red"); 
echo "<pre>"; 
print_r(my_array_intersect($array1, $array2)); 
echo "<pre/>"; 
?> 

如果是一维的数组,第三种算法比第一种快点.上述算法都适用于一维的数组,那么多维数组怎么查找相同的元素呢? 

思路:可以把多维的数组转化成一维的数组,然后再利用上述算法输出。 

代码: 
代码如下: 
function toarr($arr){ //对数组进行递归,以字符串形式返回 
foreach ($arr as $k=>$v){ 
if (!is_array($v)) { 
$str.=$v." "; 

else{ 
$str.=toarr($v); 


return $str; 
}/*递归函数结束*/ 

上式把多维数组转化成字符串,然后利用expode函数转化成一维数组即可。 



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值