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 auth_http类库进行身份效验
Mar 19 PHP
PHP判断搜索引擎蜘蛛并自动记忆到文件的代码
Feb 04 PHP
destoon官方标签大全
Jun 20 PHP
PHP基于yii框架实现生成ICO图标
Nov 13 PHP
Zend Framework教程之Zend_Db_Table用法详解
Mar 21 PHP
php微信开发之批量生成带参数的二维码
Jun 26 PHP
谈谈php对接芝麻信用踩的坑
Dec 01 PHP
thinkPHP中volist标签用法示例
Dec 06 PHP
详谈PHP中的密码安全性Password Hashing
Feb 04 PHP
php生成条形码的图片的实例详解
Sep 13 PHP
弹出模态框modal的实现方法及实例
Sep 19 PHP
php获取目录下所有文件及目录(多种方法)(推荐)
May 14 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 遍历数据表数据并列表横向排列的代码
2009/09/05 PHP
php开发留言板的CRUD(增,删,改,查)操作
2012/04/19 PHP
php小经验:解析preg_match与preg_match_all 函数
2013/06/29 PHP
php 问卷调查结果统计
2015/10/08 PHP
PHP缓冲区用法总结
2016/02/14 PHP
Laravel等框架模型关联的可用性浅析
2019/12/15 PHP
php中数组最简单的使用方法
2020/12/27 PHP
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
JavaScript判断变量是对象还是数组的方法
2014/08/28 Javascript
Javascript中this的用法详解
2014/09/22 Javascript
js实现点击链接后延迟3秒再跳转的方法
2015/06/05 Javascript
js实现汉字排序的方法
2015/07/23 Javascript
domReady的实现案例
2016/11/23 Javascript
js学习总结_基于数据类型检测的四种方式(必看)
2017/07/04 Javascript
Angular2监听页面大小变化的解决方法
2017/10/09 Javascript
vue实现弹框遮罩点击其他区域弹框关闭及v-if与v-show的区别介绍
2018/09/29 Javascript
详解利用nodejs对本地json文件进行增删改查
2019/09/20 NodeJs
浅谈vue 锚点指令v-anchor的使用
2019/11/13 Javascript
js 计数排序的实现示例(升级版)
2020/01/12 Javascript
vant-ui框架的一个bug(解决切换后onload不触发)
2020/11/11 Javascript
详解python 发送邮件实例代码
2016/12/22 Python
Python编程使用tkinter模块实现计算器软件完整代码示例
2017/11/29 Python
Windows下的Python 3.6.1的下载与安装图文详解(适合32位和64位)
2018/02/21 Python
解决python字典对值(值为列表)赋值出现重复的问题
2019/01/20 Python
使用Python3+PyQT5+Pyserial 实现简单的串口工具方法
2019/02/13 Python
Python写捕鱼达人的游戏实现
2020/03/31 Python
美国知名眼镜网站:Target Optical
2020/04/04 全球购物
鞋类设计与工艺专业销售求职信
2013/11/01 职场文书
自我推荐书
2013/12/04 职场文书
旅游管理毕业生自荐书
2014/02/02 职场文书
《油菜花开了》教学反思
2014/02/22 职场文书
美术指导求职信
2014/03/17 职场文书
党员干部群众路线个人整改措施
2014/09/18 职场文书
初中体育课教学反思
2016/02/16 职场文书
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android
MySQL实战记录之如何快速定位慢SQL
2022/03/23 MySQL