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实现paypal整合方法
Nov 28 PHP
基于flush()不能按顺序输出时的解决办法
Jun 29 PHP
PHP 5.5 创建和验证哈希最简单的方法详解
Nov 07 PHP
PHP中4个加速、缓存扩展的区别和选用建议
Mar 12 PHP
PHP中spl_autoload_register()和__autoload()区别分析
May 10 PHP
php中rename函数用法分析
Nov 15 PHP
php防止用户重复提交表单
Nov 02 PHP
PHP 在数组中搜索给定的简单实例 array_search 函数
Jun 13 PHP
php实现数据库的增删改查
Feb 26 PHP
浅谈PHP发送HTTP请求的几种方式
Jul 25 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
Oct 30 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
Nov 24 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
AJAX for PHP简单表数据查询实例
2007/01/02 PHP
PHP中fwrite与file_put_contents性能测试代码
2013/08/02 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
JQuery解析HTML、JSON和XML实例详解
2014/03/29 Javascript
JavaScript中使用Callback控制流程介绍
2015/03/16 Javascript
jQuery UI插件自定义confirm确认框的方法
2015/03/20 Javascript
javascript中eval和with用法实例总结
2015/11/30 Javascript
AngularJS 日期格式化详解
2015/12/23 Javascript
Node.js批量给图片加水印的方法
2016/11/15 Javascript
AngularJS入门教程之路由机制ngRoute实例分析
2016/12/13 Javascript
js实现股票实时刷新数据案例
2017/05/14 Javascript
vue.js使用v-model实现父子组件间的双向通信示例
2020/02/05 Javascript
node.js中module模块的功能理解与用法实例分析
2020/02/14 Javascript
[07:49]2014DOTA2国际邀请赛 Newbee夺冠后采访xiao8坦言奖金会上交
2014/07/23 DOTA
PyMongo安装使用笔记
2015/04/27 Python
python爬虫headers设置后无效的解决方法
2017/10/21 Python
PyQt5实现下载进度条效果
2018/04/19 Python
pyspark操作MongoDB的方法步骤
2019/01/04 Python
python小程序基于Jupyter实现天气查询的方法
2020/03/27 Python
Django中F函数的使用示例代码详解
2020/07/06 Python
使用anaconda安装pytorch的实现步骤
2020/09/03 Python
利用CSS3实现进度条的两种姿势详解
2017/03/21 HTML / CSS
美国药妆网站:EDCskincare.com(防晒、痤疮、抗衰老等)
2017/04/28 全球购物
美国定制钻石订婚戒指:Ritani
2017/12/08 全球购物
美国Curacao百货连锁店网站:iCuracao.com
2019/07/20 全球购物
英国排名第一的宠物店:PetPlanet
2020/02/02 全球购物
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
成人大专自我鉴定范文
2013/10/19 职场文书
宣传保护环境的公益广告词
2014/03/13 职场文书
2014感恩节演讲稿大全
2014/10/11 职场文书
2014年电教工作总结
2014/12/19 职场文书
2015年三八妇女节活动总结
2015/02/06 职场文书
工伤事故赔偿协议书
2015/08/06 职场文书
Python机器学习三大件之一numpy
2021/05/10 Python
win11怎么用快捷键锁屏? windows11锁屏的几种方法
2021/11/21 数码科技
Java中API的使用方法详情
2022/04/06 Java/Android