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 相关文章推荐
关于BIG5-HKSCS的解决方法
Mar 20 PHP
php下使用strpos需要注意 === 运算符
Jul 17 PHP
PHP使用range协议实现输出文件断点续传代码实例
Jul 04 PHP
php将access数据库转换到mysql数据库的方法
Dec 24 PHP
微信支付开发动态链接Native支付
Jul 12 PHP
PHP Ajax实现无刷新附件上传
Aug 17 PHP
php中get_magic_quotes_gpc()函数说明
Feb 06 PHP
php插件Xajax使用方法详解
Aug 31 PHP
PHP中危险的file_put_contents函数详解
Nov 04 PHP
Ajax+Jpgraph实现的动态折线图功能示例
Feb 11 PHP
php 使用mpdf实现指定字段配置字体样式的方法
Jul 29 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
Oct 21 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
SMARTY学习手记
2007/01/04 PHP
php max_execution_time执行时间问题
2011/07/17 PHP
php获取根域名方法汇总
2014/10/28 PHP
php接口技术实例详解
2016/12/07 PHP
php制作基于xml的RSS订阅源功能示例
2017/02/08 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
用javascript getComputedStyle获取和设置style的原理
2008/10/10 Javascript
jquery 跨域访问问题解决方法(笔记)
2011/06/08 Javascript
使用Mootools动态添加Css样式表代码,兼容各浏览器
2011/12/12 Javascript
JS实现下拉框的动态添加(附效果)
2013/04/03 Javascript
javascript弹出拖动窗口
2015/08/11 Javascript
利用JS实现点击按钮后图片自动切换的简单方法
2016/10/24 Javascript
jquery文字填写自动高度的实现方法
2016/11/07 Javascript
js数组与字符串常用方法总结
2017/01/13 Javascript
JS实现自动轮播图效果(自适应屏幕宽度+手机触屏滑动)
2017/06/19 Javascript
vuejs使用FormData实现ajax上传图片文件
2017/08/08 Javascript
浅谈vue项目重构技术要点和总结
2018/01/23 Javascript
[01:06:12]VP vs NIP 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
[43:41]OG vs Newbee 2019国际邀请赛淘汰赛 胜者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
windows下Python实现将pdf文件转化为png格式图片的方法
2017/07/21 Python
PyQt5固定窗口大小的方法
2019/06/18 Python
Python列表与元组的异同详解
2019/07/02 Python
Python目录和文件处理总结详解
2019/09/02 Python
深入解析HTML5中的Blob对象的使用
2015/09/08 HTML / CSS
AmazeUI 单选框和多选框的实现示例
2020/08/18 HTML / CSS
面向对象编程是如何提高软件开发水平的
2014/05/06 面试题
学生会主席就职演讲稿
2014/01/14 职场文书
建设工程授权委托书
2014/09/22 职场文书
党的群众路线教育实践活动对照检查材料(教师)
2014/09/24 职场文书
2014年仓管员工作总结
2014/11/18 职场文书
个人思想政治总结
2015/03/05 职场文书
2016年春节慰问信息
2015/03/25 职场文书
执行力心得体会范文
2016/01/11 职场文书
Python控制台输出俄罗斯方块移动和旋转功能
2021/04/18 Python
解决mysql的int型主键自增问题
2021/07/15 MySQL
GO语言字符串处理函数之处理Strings包
2022/04/14 Golang