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 相关文章推荐
用缓存实现静态页面的测试
Dec 06 PHP
php ob_flush,flush在ie中缓冲无效的解决方法
May 09 PHP
php 中文和编码判断代码
May 16 PHP
web目录下不应该存在多余的程序(安全考虑)
May 09 PHP
深入解析PHP垃圾回收机制对内存泄露的处理
Jun 14 PHP
PHP中$_FILES的使用方法及注意事项说明
Feb 14 PHP
php5.2以下版本无json_decode函数的解决方法
May 25 PHP
php实现模拟登陆方正教务系统抓取课表
May 19 PHP
PHP仿微信发红包领红包效果
Oct 30 PHP
ThinkPHP中获取指定日期后工作日的具体日期方法
Oct 14 PHP
laravel解决迁移文件一次删除创建字段报错的问题
Oct 24 PHP
linux mint下安装phpstorm2020包括JDK部分的教程详解
Sep 17 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+xslt在windows平台上
2006/10/09 PHP
php str_pad 函数使用详解
2009/01/13 PHP
浅析51个PHP处理字符串的函数
2013/08/02 PHP
php实现对两个数组进行减法操作的方法
2015/04/17 PHP
PHP缓存工具XCache安装与使用方法详解
2018/04/09 PHP
PHP网页缓存技术优点及代码实例
2020/07/29 PHP
超轻量级的基于jquery的三级展开列表
2011/04/26 Javascript
location.href用法总结(最主要的)
2013/12/27 Javascript
最简单的tab切换实例代码
2016/05/13 Javascript
Vue.js Ajax动态参数与列表显示实现方法
2016/10/20 Javascript
细说webpack源码之compile流程-rules参数处理技巧(1)
2017/12/26 Javascript
浅析Vue实例以及生命周期
2018/08/14 Javascript
layui框架table 数据表格的方法级渲染详解
2018/08/19 Javascript
vue2.0 路由模式mode=&quot;history&quot;的作用
2018/10/18 Javascript
keep-alive不能缓存多层级路由菜单问题解决
2020/03/10 Javascript
浅析JavaScript 函数防抖和节流
2020/07/13 Javascript
pygame学习笔记(2):画点的三种方法和动画实例
2015/04/15 Python
浅谈Python 集合(set)类型的操作——并交差
2016/06/30 Python
Python基础之函数原理与应用实例详解
2020/01/03 Python
Python如何定义有可选参数的元类
2020/07/31 Python
Django celery异步任务实现代码示例
2020/11/26 Python
利用html5 file api读取本地文件示例(如图片、PDF等)
2018/03/07 HTML / CSS
英国布鲁姆精品店:Bloom Boutique
2018/03/01 全球购物
加拿大城市本地限时优惠:Buytopia.ca
2018/09/19 全球购物
台湾家适得:Homeget
2019/02/11 全球购物
澳大利亚家庭花园和DIY工具网店:VidaXL
2019/05/03 全球购物
如何开启linux的ssh服务
2013/06/03 面试题
Java程序员面试题
2013/07/15 面试题
趣味比赛活动方案
2014/02/15 职场文书
村抢险救灾方案
2014/05/09 职场文书
对外汉语教师推荐信
2015/03/27 职场文书
道士塔读书笔记
2015/06/30 职场文书
2019最新企业员工考勤管理制度(通用版)!
2019/07/02 职场文书
使用Springboot实现健身房管理系统
2021/07/01 Java/Android
Python Matplotlib绘制等高线图与渐变色扇形图
2022/04/14 Python
Li list-style-image 图片垂直居中实现方法
2023/05/21 HTML / CSS