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 相关文章推荐
PHP中上传大体积文件时需要的设置
Oct 09 PHP
Email+URL的判断和自动转换函数
Oct 09 PHP
PHP 变量的定义方法
Jan 26 PHP
php中一个完整表单处理实现代码
Nov 10 PHP
基于Zookeeper的使用详解
May 02 PHP
php对数组排序代码分享
Feb 24 PHP
Codeigniter框架实现获取分页数据和总条数的方法
Dec 05 PHP
PHP动态输出JavaScript代码实例
Feb 12 PHP
在Linux系统下一键重新安装WordPress的脚本示例
Jun 30 PHP
CI框架常用经典操作类总结(路由,伪静态,分页,session,验证码等)
Nov 21 PHP
PHP环形链表实现方法示例
Sep 15 PHP
PHP运用foreach神奇的转换数组(实例讲解)
Feb 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
ThinkPHP写数组插入与获取最新插入数据ID实例
2014/11/03 PHP
PHP支付系统设计与典型案例分享
2016/08/02 PHP
javascript  Error 对象 错误处理
2008/05/18 Javascript
window.parent调用父框架时 ie跟火狐不兼容问题
2009/07/30 Javascript
JQuery 操作Javascript对象和数组的工具函数小结
2010/01/22 Javascript
利用google提供的API(JavaScript接口)获取网站访问者IP地理位置的代码详解
2010/07/24 Javascript
JS实现时间格式化的方式汇总
2013/10/16 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
BootStrap与validator 使用笔记(JAVA SpringMVC实现)
2016/09/21 Javascript
微信小程序(应用号)简单实例应用及实例详解
2016/09/26 Javascript
AngularJS入门教程之MVC架构实例分析
2016/11/01 Javascript
微信小程序实战之仿android fragment可滑动底部导航栏(4)
2020/04/16 Javascript
详解Angular 中 ngOnInit 和 constructor 使用场景
2017/06/22 Javascript
BootstrapTable加载按钮功能实例代码详解
2017/09/22 Javascript
Vue.js搭建移动端购物车界面
2020/06/28 Javascript
vue解决使用webpack打包后keep-alive不生效的方法
2018/09/01 Javascript
vue使用vuex实现首页导航切换不同路由的方法
2019/05/08 Javascript
js实现简单的打印表格
2020/01/15 Javascript
React 条件渲染最佳实践小结(7种)
2020/09/27 Javascript
[32:17]完美世界DOTA2联赛循环赛LBZS vs Forest第二场 10月30日
2020/10/31 DOTA
二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
2013/12/03 Python
Python字符串处理函数简明总结
2015/04/13 Python
python遍历数组的方法小结
2015/04/30 Python
Python抓取手机号归属地信息示例代码
2016/11/28 Python
python脚本替换指定行实现步骤
2017/07/11 Python
Python探索之ModelForm代码详解
2017/10/26 Python
对python中的try、except、finally 执行顺序详解
2019/02/18 Python
Python----数据预处理代码实例
2019/03/20 Python
python sklearn库实现简单逻辑回归的实例代码
2019/07/01 Python
python读取word 中指定位置的表格及表格数据
2019/10/23 Python
Django 项目布局方法(值得推荐)
2020/03/22 Python
老公给老婆的道歉信
2014/01/10 职场文书
英文商务邀请信
2014/01/22 职场文书
校园安全教育广播稿
2014/02/17 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
大学生创业计划书常用模板
2019/08/07 职场文书