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


Posted in PHP onSeptember 05, 2012

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 相关文章推荐
一个PHP操作Access类(PHP+ODBC+Access)
Jan 02 PHP
php下通过伪造http头破解防盗链的代码
Jul 03 PHP
学习php笔记 字符串处理
Oct 19 PHP
PHP排序算法的复习和总结
Feb 15 PHP
Laravel 5 框架入门(二)构建 Pages 的管理功能
Apr 09 PHP
详解PHP中的PDO类
Jul 06 PHP
ThinkPHP实现附件上传功能
Apr 27 PHP
PHP删除二维数组中相同元素及数组重复值的方法示例
May 05 PHP
php大小写转换函数(strtolower、strtoupper)用法介绍
Nov 17 PHP
PHP如何实现订单的延时处理详解
Dec 30 PHP
PHP代码重构方法漫谈
Apr 17 PHP
php 使用 __call实现重载功能示例
Nov 18 PHP
PHP中使用crypt()实现用户身份验证的代码
Sep 05 #PHP
通过缓存数据库结果提高PHP性能的原理介绍
Sep 05 #PHP
PHP中使用foreach和引用导致程序BUG的问题介绍
Sep 05 #PHP
php循环语句 for()与foreach()用法区别介绍
Sep 05 #PHP
PHP手机号码归属地查询代码(API接口/mysql)
Sep 04 #PHP
PHP获取用户的浏览器与操作系统信息的代码
Sep 04 #PHP
PHP中根据IP地址判断城市实现城市切换或跳转代码
Sep 04 #PHP
You might like
异世界新番又来了,同样是从零开始,男主的年龄降到5岁
2020/04/09 日漫
腾讯QQ php程序员面试题目整理
2010/06/08 PHP
上传文件先创建目录 再上传到目录里面去
2010/12/29 PHP
关于PHP语言构造器介绍
2013/07/08 PHP
利用PHP_XLSXWriter代替PHPExcel的方法示例
2017/07/16 PHP
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
使用js获取QueryString的方法小结
2010/02/28 Javascript
JavaScript中String和StringBuffer的速度之争
2010/04/01 Javascript
dess中一个简单的多路委托的实现
2010/07/20 Javascript
ajax异步刷新实现更新数据库
2012/12/03 Javascript
asp.net中System.Timers.Timer的使用方法
2013/03/20 Javascript
jquery实现更改表格行顺序示例
2014/04/30 Javascript
jquery实现的伪分页效果代码
2015/10/29 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
2015/11/17 Javascript
JavaScript html5 canvas画布中删除一个块区域的方法
2016/01/26 Javascript
JavaScript知识点总结(六)之JavaScript判断变量数据类型
2016/05/31 Javascript
原生JS实现首页进度加载动画
2016/09/14 Javascript
dul无法加载bootstrap实现unload table/user恢复
2016/09/29 Javascript
Seajs是什么及sea.js 由来,特点以及优势
2016/10/13 Javascript
xcode中获取js文件的路径方法(推荐)
2016/11/05 Javascript
利用D3.js实现最简单的柱状图示例代码
2016/12/09 Javascript
Ajax 加载数据 练习代码
2017/01/05 Javascript
jQuery实现使用sort方法对json数据排序的方法
2018/04/17 jQuery
JS实现的新闻列表自动滚动效果示例
2019/01/30 Javascript
[04:40]2016个国际邀请赛中国区预选赛场地——华西村观战指南
2016/06/25 DOTA
Python的math模块中的常用数学函数整理
2016/02/04 Python
PyQt5利用QPainter绘制各种图形的实例
2017/10/19 Python
使用pyshp包进行shapefile文件修改的例子
2019/12/06 Python
浅谈利用缓存来优化HTML5 Canvas程序的性能
2015/05/12 HTML / CSS
美国椅子和沙发制造商:La-Z-Boy
2020/10/25 全球购物
房屋所有权证明
2014/10/20 职场文书
工程承包协议书
2014/10/20 职场文书
新年祝酒词大全
2015/08/11 职场文书
MySQL去除重叠时间求时间差和的实现
2021/08/23 MySQL
mysql全面解析json/数组
2022/07/07 MySQL
前端与RabbitMQ实时消息推送未读消息小红点实现示例
2022/07/23 Java/Android