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 相关文章推荐
文件上传的实现
Oct 09 PHP
phpmyadmin的#1251问题
Nov 25 PHP
PHP iconv 解决utf-8和gb2312编码转换问题
Apr 12 PHP
php操作xml
Oct 27 PHP
PHP常用编译参数中文说明
Sep 27 PHP
php隐藏IP地址后两位显示为星号的方法
Nov 21 PHP
php操作(删除,提取,增加)zip文件方法详解
Mar 12 PHP
php使用正则表达式进行字符串搜索的方法
Mar 23 PHP
PHP 中魔术常量的实例详解
Oct 26 PHP
php实现有序数组旋转后寻找最小值方法
Sep 27 PHP
phpinfo无法显示的原因及解决办法
Feb 15 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
Zend Guard一些常见问题解答
2008/09/11 PHP
php下保存远程图片到本地的办法
2010/08/08 PHP
PHP 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
解析php php_openssl.dll的作用
2013/07/01 PHP
php使用cookie保存登录用户名的方法
2015/01/26 PHP
magento后台无法登录解决办法的两种方法
2016/12/09 PHP
PHP实现的最大正向匹配算法示例
2017/12/19 PHP
jquery ajax 登录验证实现代码
2009/09/23 Javascript
IE8下String的Trim()方法失效的解决方法
2013/11/08 Javascript
jquery cookie的用法总结
2013/11/18 Javascript
javascript计时器编写过程与实现方法
2016/02/29 Javascript
BootStrap Table后台分页时前台删除最后一页所有数据refresh刷新后无数据问题
2016/12/28 Javascript
jquery ajaxfileuplod 上传文件 essyui laoding 效果【防止重复上传文件】
2018/05/26 jQuery
微信小程序之自定义组件的实现代码(附源码)
2018/08/02 Javascript
react build 后打包发布总结
2018/08/24 Javascript
vue2.0 + ele的循环表单及验证字段方法
2018/09/18 Javascript
vue 组件销毁并重置的实现
2020/01/13 Javascript
[39:07]LGD vs VP 2018国际邀请赛淘汰赛BO3 第二场 8.21
2018/08/22 DOTA
python实现多线程采集的2个代码例子
2014/07/07 Python
python实现三维拟合的方法
2018/12/29 Python
python实现简单的购物程序代码实例
2020/03/03 Python
Python爬虫爬取杭州24时温度并展示操作示例
2020/03/27 Python
python基本算法之实现归并排序(Merge sort)
2020/09/01 Python
html5 冒号分隔符对齐的实现
2019/07/31 HTML / CSS
英国领先的杂志订阅网站:Magazine.co.uk
2018/01/25 全球购物
出纳岗位职责模板
2013/11/27 职场文书
公司办公室岗位职责
2014/03/19 职场文书
财产公证书
2014/04/10 职场文书
保安公司服务承诺书
2014/05/28 职场文书
小学运动会口号
2014/06/07 职场文书
安全演讲稿开场白
2014/08/25 职场文书
优秀班主任申报材料
2014/12/16 职场文书
导游欢送词
2015/01/31 职场文书
大学生个人学习总结
2015/02/15 职场文书
一个成功的互联网创业项目,必须满足这些要求
2019/08/23 职场文书
Python数据分析之pandas函数详解
2021/04/21 Python