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 include的妙用,实现路径加密
Jul 29 PHP
PHP 数组实例说明
Aug 18 PHP
PHP-CGI进程CPU 100% 与 file_get_contents 函数的关系分析
Aug 15 PHP
php json_encode值中大括号与花括号区别
Sep 30 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
Mar 18 PHP
PHP Cookei记录用户历史浏览信息的代码
Feb 03 PHP
PHP如何获取当前主机、域名、网址、路径、端口等参数
Jun 09 PHP
详解PHP处理字符串类似indexof的方法函数
Jun 11 PHP
PHP空值检测函数与方法汇总
Nov 19 PHP
PHP设计模式之抽象工厂模式实例分析
Mar 25 PHP
对laravel的session获取与存取方法详解
Oct 08 PHP
PHP+Redis链表解决高并发下商品超卖问题(实现原理及步骤)
Aug 03 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
PHP COOKIE设置为浏览器进程
2009/06/21 PHP
php实现按天数、星期、月份查询的搜索框
2016/05/02 PHP
ThinkPHP框架表单验证操作方法
2017/07/19 PHP
php数值计算num类简单操作示例
2020/05/15 PHP
javascript 特性检测并非浏览器检测
2010/01/15 Javascript
js对图片base64编码字符串进行解码并输出图像示例
2014/03/17 Javascript
JavaScript中对象property的读取和写入方法介绍
2014/12/30 Javascript
JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例
2016/01/26 Javascript
自制微信公众号一键排版工具
2016/09/22 Javascript
利用prop-types第三方库对组件的props中的变量进行类型检测
2017/05/02 Javascript
原生js实现简单的链式操作
2017/07/04 Javascript
JavaScript html5 canvas实现图片上画超链接
2017/10/20 Javascript
javascript函数的节流[throttle]与防抖[debounce]
2017/11/15 Javascript
Vue如何实现响应式系统
2018/07/11 Javascript
Python二叉树的定义及常用遍历算法分析
2017/11/24 Python
python利用requests库进行接口测试的方法详解
2018/07/06 Python
python选取特定列 pandas iloc,loc,icol的使用详解(列切片及行切片)
2019/08/06 Python
Python 正则表达式爬虫使用案例解析
2019/09/23 Python
Django自定义用户表+自定义admin后台中的字段实例
2019/11/18 Python
Django对接支付宝实现支付宝充值金币功能示例
2019/12/17 Python
解析PyCharm Python运行权限问题
2020/01/08 Python
python如何通过闭包实现计算器的功能
2020/02/22 Python
浅析Python 责任链设计模式
2020/09/11 Python
PyCharm中关于安装第三方包的三个建议
2020/09/17 Python
Holland & Barrett爱尔兰:英国领先的健康零售商
2019/03/31 全球购物
J2EE模式面试题
2016/10/11 面试题
大学生创业项目方案
2014/03/08 职场文书
《窗前的气球》教学反思
2014/04/07 职场文书
银行内勤岗位职责
2014/04/09 职场文书
施工安全标语
2014/06/07 职场文书
企业员工集体活动方案
2014/08/17 职场文书
企业党建工作汇报材料
2014/08/19 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
停课通知书
2015/04/24 职场文书
MongoDB支持的索引类型
2022/04/11 MongoDB
vue选项卡切换的实现案例
2022/04/11 Vue.js