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

2015-01-24信息快讯网

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函数转化成一维数组即可。

联想一下,数据库返回某一字段重名的值也是这个道理,当然通过sql语句也能够实现。
PHP获取数组中重复最多的元素的实现方法
解析Extjs与php数据交互(增删查改)
深入extjs与php参数交互的详解
解析centos中Apache、php、mysql 默认安装路径
关于js与php互相传值的介绍
探讨:如何使用PhpDocumentor生成文档
通过PHP current函数获取未知字符键名数组第一个元素的值
解析PHP将对象转换成数组的方法(兼容多维数组类型)
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
PHP 简易输出CSV表格文件的方法详解
探讨Smarty中如何获取数组的长度以及smarty调用php函数的详解
解析PHP中数组元素升序、降序以及重新排序的函数
数组与类使用PHP的可变变量名需要的注意的问题
php无限分类且支持输出树状图的详细介绍
基于empty函数的输出详解
基于PHP输出缓存(output_buffering)的深入理解
PHP curl 并发最佳实践代码分享
PHP中使用crypt()实现用户身份验证的代码
通过缓存数据库结果提高PHP性能的原理介绍
PHP中使用foreach和引用导致程序BUG的问题介绍
php循环语句 for()与foreach()用法区别介绍
PHP手机号码归属地查询代码(API接口/mysql)
php数组一对一替换实现代码
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
php中数组首字符过滤功能代码
PHP常用开发函数解析之数组篇[未完结]
php 操作数组(合并,拆分,追加,查找,删除等)
php中的一些数组排序方法分享
php输出xml格式字符串(用的这个)
PHP逐行输出(ob_flush与flush的组合)
php数组函数序列之krsort()- 对数组的元素键名进行降序排序,保持索引关系
php数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
php数组函数序列之sort() 对数组的元素值进行升序排序
php数组函数序列之ksort()对数组的元素键名进行升序排序,保持索引关系
php数组函数序列之rsort() - 对数组的元素值进行降序排序
php XMLWriter类的简单示例代码(RSS输出)
php统计文件大小,以GB、MB、KB、B输出
©2014-2024 dbsqp.com