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 相关文章推荐
通过ICQ网关发送手机短信的PHP源程序
Oct 09 PHP
php 破解防盗链图片函数
Dec 09 PHP
PHP运行时强制显示出错信息的代码
Apr 20 PHP
PHP伪静态Rewrite设置之APACHE篇
Jul 30 PHP
php中实现记住密码下次自动登录的例子
Nov 06 PHP
php简单实现MVC
Feb 05 PHP
WordPress中给文章添加自定义字段及后台编辑功能区域
Dec 19 PHP
PHP函数超时处理方法
Feb 14 PHP
php 的反射详解及示例代码
Aug 25 PHP
workerman结合laravel开发在线聊天应用的示例代码
Oct 30 PHP
PHP实现函数内修改外部变量值的方法示例
Dec 28 PHP
浅谈PHPANALYSIS提取关键字
Mar 08 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
用Flash图形化数据(一)
2006/10/09 PHP
PHP语言中global和$GLOBALS[]的分析 之二
2012/02/02 PHP
php实现快速排序法函数代码
2012/08/27 PHP
PHP读取CURL模拟登录时生成Cookie文件的方法
2014/11/04 PHP
ThinkPHP中Session用法详解
2014/11/29 PHP
mac系统下为 php 添加 pcntl 扩展
2016/08/28 PHP
如何学习Javascript入门指导
2013/11/01 Javascript
JS实现鼠标滑过折叠与展开菜单效果代码
2015/09/06 Javascript
jQuery toggle 代替方法
2016/03/22 Javascript
jQuery实现背景弹性滚动的导航效果
2016/06/01 Javascript
JavaScript计算值然后把值嵌入到html中的实现方法
2016/10/29 Javascript
JS实现点击循环切换显示内容的方法
2017/10/19 Javascript
webpack-dev-server自动更新页面方法
2018/02/22 Javascript
解决 window.onload 被覆盖的问题方法
2020/01/14 Javascript
Vue 3.0 全家桶抢先体验
2020/04/28 Javascript
关于angular引入ng-zorro的问题浅析
2020/09/09 Javascript
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
[00:34]TI7不朽珍藏III——纯金地穴编织者饰品展示
2017/07/15 DOTA
[03:18]【TI9纪实】社区大触GL与木木
2019/08/25 DOTA
Python中的迭代器漫谈
2015/02/03 Python
PyQt 线程类 QThread使用详解
2017/07/16 Python
详解Python核心编程中的浅拷贝与深拷贝
2018/01/07 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
np.dot()函数的用法详解
2020/01/17 Python
python numpy实现rolling滚动案例
2020/06/08 Python
浅谈django不使用restframework自定义接口与使用的区别
2020/07/15 Python
CSS3中的注音对齐属性ruby-align用法指南
2016/07/01 HTML / CSS
高级技校毕业生自荐信
2013/11/18 职场文书
我的中国梦演讲稿800字
2014/08/19 职场文书
审计局班子四风对照检查材料思想汇报
2014/10/07 职场文书
夫妻双方自愿离婚协议书怎么写
2014/12/01 职场文书
z-index不起作用
2021/03/31 HTML / CSS
Mysql中 unique列插入重复值该怎么解决呢
2021/05/26 MySQL
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android
kubernetes集群搭建Zabbix监控平台的详细过程
2022/07/07 Servers