PHP输出数组中重名的元素的几种处理方法

 更新时间:2012年09月05日 22:54:03   作者:  
PHP输出数组中重名的元素的几种处理方法,需要的朋友可以参考下
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语句也能够实现。

相关文章

  • centos下file_put_contents()无法写入文件的原因及解决方法

    centos下file_put_contents()无法写入文件的原因及解决方法

    下面小编就为大家带来一篇centos下file_put_contents()无法写入文件的原因及解决方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • php+redis实现注册、删除、编辑、分页、登录、关注等功能示例

    php+redis实现注册、删除、编辑、分页、登录、关注等功能示例

    这篇文章主要介绍了php+redis实现注册、删除、编辑、分页、登录、关注等功能,结合实例形式分析了php+redis项目开发中常用的注册,删除,编辑,分页,登录,关注功能相关实现技巧,需要的朋友可以参考下
    2017-02-02
  • php之性能优化案例

    php之性能优化案例

    这篇文章主要介绍了php之性能优化案例,本文通过多个案例和多种场景下讲述了如何对php脚本进行性能上的优化,以下就是详细内容,需要的朋友可以参考下
    2021-07-07
  • 详解php中流行的rpc框架

    详解php中流行的rpc框架

    如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call)。远程调用意思就是:被调用方法的具体实现不在程序运行本地,而是在别的某个远程地方。
    2021-05-05
  • 用mysql内存表来代替php session的类

    用mysql内存表来代替php session的类

    mysql内存表实现替换php session类,效果什么大家可以自己测试下。
    2009-02-02
  • php对象和数组相互转换的方法

    php对象和数组相互转换的方法

    这篇文章主要介绍了php对象和数组相互转换的方法,通过两个自定义函数实现对象与数组的相互转换功能,非常简单实用,需要的朋友可以参考下
    2015-05-05
  • PHP中单引号与双引号的区别分析

    PHP中单引号与双引号的区别分析

    在PHP中,我们可以使用单引号或者双引号来表示字符串。不过我们作为开发者,应该了解其中的区别。单引号与双引号对于定义字符一个是可以解析变量一个是会把变量直接输出来,同时单引号与双引号在字符处理上单引号要优与双引号
    2014-08-08
  • php修改时间格式的代码

    php修改时间格式的代码

    php修改时间格式的代码,需要的朋友可以参考下。
    2011-05-05
  • PHP实现的简单缓存类

    PHP实现的简单缓存类

    这篇文章主要介绍了PHP实现的简单缓存类,实例分析了php缓存文件的定义及使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-07-07
  • 分享一个超好用的php header下载函数

    分享一个超好用的php header下载函数

    这篇文章主要为大家分享一个超好用的php header下载函数,需要的朋友可以参考下
    2014-01-01

最新评论