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动态变静态原理
Nov 25 PHP
php笔记之:AOP的应用
Apr 24 PHP
PHP函数之日期时间函数date()使用详解
Sep 09 PHP
php while循环得到循环次数
Oct 26 PHP
PHP迭代器的内部执行过程详解
Nov 12 PHP
PHP把网页保存为word文件的三种方法
Apr 01 PHP
thinkphp实现发送邮件密码找回功能实例
Dec 01 PHP
PHP中遇到的时区问题解决方法
Jul 23 PHP
PHP实现GIF图片验证码
Nov 04 PHP
Laravel框架实现利用中间件进行操作日志记录功能
Jun 06 PHP
PHP实现的操作数组类库定义与用法示例
May 24 PHP
如何用PHP websocket实现网页实时聊天
May 26 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 分库分表hash算法
2009/11/12 PHP
PHPMYADMIN导入数据最大为2M的解决方法
2012/04/23 PHP
微信公众号点击菜单即可打开并登录微站的实现方法
2014/11/14 PHP
Yii2实现自定义独立验证器的方法
2017/05/05 PHP
PHP实现批量修改文件名的方法示例
2019/09/18 PHP
Web版彷 Visual Studio 2003 颜色选择器
2007/01/09 Javascript
javascrip客户端验证文件大小及文件类型并重置上传
2011/01/12 Javascript
javascript生成随机数的方法
2014/05/16 Javascript
jQuery实现带有洗牌效果的动画分页实例
2015/08/31 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
2015/12/08 Javascript
jQuery formValidator表单验证
2016/01/07 Javascript
JS定时器使用,定时定点,固定时刻,循环执行详解
2016/05/31 Javascript
js轮盘抽奖实例分析
2020/04/17 Javascript
前端设计师们最常用的JS代码汇总
2016/09/25 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
Vue 2.X的状态管理vuex记录详解
2017/03/23 Javascript
解决AjaxFileupload 上传时会出现连接重置的问题
2017/07/07 Javascript
Angular5中调用第三方库及jQuery的添加的方法
2018/06/07 jQuery
express启用https使用小记
2019/05/21 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
python中的代码编码格式转换问题
2015/06/10 Python
python 上下文管理器使用方法小结
2017/10/10 Python
python爬取拉勾网职位数据的方法
2018/01/24 Python
解决pycharm每次新建项目都要重新安装一些第三方库的问题
2019/01/17 Python
python快排算法详解
2019/03/04 Python
Python爬取智联招聘数据分析师岗位相关信息的方法
2019/08/13 Python
numpy矩阵数值太多不能全部显示的解决
2020/05/14 Python
python:删除离群值操作(每一行为一类数据)
2020/06/08 Python
python asyncio 协程库的使用
2021/01/21 Python
canvas 下载二维码和图片加水印的方法
2018/03/21 HTML / CSS
历史教育专业个人求职信
2013/12/13 职场文书
大学毕业感言一句话
2014/02/06 职场文书
环保建议书300字
2014/05/14 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
用JS创建一个录屏功能
2021/11/11 Javascript
Nginx配置使用详解
2022/07/07 Servers