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 相关文章推荐
在任意字符集下正常显示网页的方法一
Apr 01 PHP
header中Content-Disposition的作用与使用方法
Jun 13 PHP
PHP页面中文乱码分析
Oct 29 PHP
php简单获取目录列表的方法
Mar 24 PHP
php邮箱地址正则表达式验证
Nov 13 PHP
php+ajax无刷新上传图片实例代码
Nov 17 PHP
php封装的验证码工具类完整实例
Oct 19 PHP
Laravel5.* 打印出执行的sql语句的方法
Jul 24 PHP
PHP封装的验证码工具类定义与用法示例
Aug 22 PHP
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
Sep 16 PHP
PHP中的self关键字详解
Jun 23 PHP
PHP实现微信提现(企业付款到零钱)
Aug 01 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函数
2008/10/03 PHP
php eval函数用法 PHP中eval()函数小技巧
2012/10/31 PHP
PHP实现的多文件上传类及用法示例
2016/05/06 PHP
gridpanel动态加载数据的实例代码
2013/07/18 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
JS深度拷贝Object Array实例分析
2016/03/31 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
基于JavaScript实现跳转提示页面
2016/09/24 Javascript
JavaScript实现的CRC32函数示例
2016/11/23 Javascript
AngularJS+bootstrap实现动态选择商品功能示例
2017/05/17 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
2017/06/22 jQuery
jQuery列表检索功能实现代码
2017/07/17 jQuery
javascript Function函数理解与实战
2017/12/01 Javascript
深入理解Node内建模块和对象
2019/03/12 Javascript
[03:27]最受玩家喜爱奖提名:PZH_Element 致玩家寄语
2016/12/20 DOTA
python通过urllib2爬网页上种子下载示例
2014/02/24 Python
Django1.7+python 2.78+pycharm配置mysql数据库
2016/10/09 Python
Python设计模式之命令模式简单示例
2018/01/10 Python
Python get获取页面cookie代码实例
2018/09/12 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
Python设计模式之观察者模式原理与用法详解
2019/01/16 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
CSS3的 fit-content实现水平居中
2017/09/07 HTML / CSS
HTML5拖放API实现自动生成相框功能
2020/04/07 HTML / CSS
全球最大的房车租赁市场:Outdoorsy
2018/09/19 全球购物
大码女装:Ulla Popken
2019/08/06 全球购物
美国最大最全的亚洲购物网站:美国亚米网(Yamibuy)
2020/05/05 全球购物
电气工程及自动化专业自荐书范文
2013/12/18 职场文书
后勤采购员岗位职责
2013/12/19 职场文书
会计电算化专业自荐信
2014/03/15 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
党员带头倡议书
2015/04/29 职场文书
帝企鹅日记观后感
2015/06/10 职场文书
教师节随笔
2015/08/15 职场文书
Ajax常用封装库——Axios的使用
2021/05/08 Javascript
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle