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性能优化工具篇Benchmark类调试执行时间
Dec 06 PHP
php中hashtable实现示例分享
Feb 13 PHP
PHP中的命名空间相关概念浅析
Jan 22 PHP
浅谈json_encode用法
Mar 05 PHP
php随机显示指定文件夹下图片的方法
Jul 13 PHP
学习php设计模式 php实现抽象工厂模式
Dec 07 PHP
Yii2框架使用计划任务的方法
May 25 PHP
php版微信公众平台开发之验证步骤实例详解
Sep 23 PHP
Zend Framework入门教程之Zend_Db数据库操作详解
Dec 08 PHP
PHP简单获取随机数的常用方法小结
Jun 07 PHP
PHP区块查询实现方法分析
May 12 PHP
PHP defined()函数的使用图文详解
Jul 20 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
文件系统基本操作类
2006/11/23 PHP
php桌面中心(四) 数据显示
2007/03/11 PHP
《PHP编程最快明白》第四讲:日期、表单接收、session、cookie
2010/11/01 PHP
php使用递归函数实现数字累加的方法
2015/03/16 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
2017/06/11 PHP
PDO::inTransaction讲解
2019/01/28 PHP
JavaScript自定义DateDiff函数(兼容所有浏览器)
2012/03/01 Javascript
js中页面的重新加载(当前页面/上级页面)及frame或iframe元素引用介绍
2013/01/24 Javascript
jQuery不间断滚动效果(模拟百度新闻支持文字/图片/垂直滚动)
2013/02/05 Javascript
javascript表单验证使用示例(javascript验证邮箱)
2014/01/07 Javascript
Javascript基础教程之break和continue语句
2015/01/18 Javascript
基于jquery ui的alert,confirm方案(支持换肤)
2015/04/03 Javascript
js实现鼠标移到链接文字弹出一个提示层的方法
2015/05/11 Javascript
Jquery zTree 树控件异步加载操作
2016/02/25 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
使用JavaScript实现ajax的实例代码
2016/05/11 Javascript
JS 对java返回的json格式的数据处理方法
2016/12/05 Javascript
原生JS实现导航下拉菜单效果
2020/11/25 Javascript
详解Angular2 关于*ngFor 嵌套循环
2017/05/22 Javascript
基于js 字符串indexof与search方法的区别(详解)
2017/12/04 Javascript
使用javascript做时间倒数读秒功能的实例
2019/01/23 Javascript
p5.js绘制旋转的正方形
2019/10/23 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
vue 组件基础知识总结
2021/01/26 Vue.js
[06:21]2014DOTA2国际邀请赛 庆祝VG首阶段领跑;B叔为挣牛排半夜整理情报
2014/07/13 DOTA
速记Python布尔值
2017/11/09 Python
详解python实现识别手写MNIST数字集的程序
2018/08/03 Python
python使用ddt过程中遇到的问题及解决方案【推荐】
2018/10/29 Python
自定义Django Form中choicefield下拉菜单选取数据库内容实例
2020/03/13 Python
网络教育自我鉴定
2013/11/01 职场文书
大三学生做职业规划:给未来找个方向
2014/02/24 职场文书
常务副总经理岗位职责
2014/04/12 职场文书
保密工作目标责任书
2014/07/28 职场文书
大学宣传委员竞选稿
2015/11/19 职场文书
晚会开幕词范文
2016/03/04 职场文书
实战 快速定位MySQL的慢SQL
2022/03/22 MySQL