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语句也能够实现。

相关文章

  • PHP实现二维数组根据key进行排序的方法

    PHP实现二维数组根据key进行排序的方法

    这篇文章主要介绍了PHP实现二维数组根据key进行排序的方法,涉及php数组的遍历与排序相关操作技巧,需要的朋友可以参考下
    2016-12-12
  • php引用计数器进行垃圾收集机制介绍

    php引用计数器进行垃圾收集机制介绍

    每一种计算机语言都有自己的自动垃圾回收机制,让程序员不必过分关心程序内存分配,php也不例外,但是在面向对象编程(OOP)编程中,有些对象需要显式的销毁;防止程序执行内存溢出
    2012-09-09
  • php多用户读写文件冲突的解决办法

    php多用户读写文件冲突的解决办法

    解决多调用同时写一个文件时我们会使用flock来解决些问题,这样同一时间只有一个用户可以写文件,同时其它用户进行等待队列了,下面我来介绍一下flock解决多用户读写文件冲空问题
    2013-11-11
  • PHP根据文章内容生成关键词自动化Keywords标签

    PHP根据文章内容生成关键词自动化Keywords标签

    这篇文章主要为大家介绍了PHP根据文章内容生成关键词实现自动化Keywords标签实例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-12-12
  • php没有文件被上传的实例分析及解决办法

    php没有文件被上传的实例分析及解决办法

    在本篇文章里小编给大家整理的是一篇关于php没有文件被上传的实例分析及解决办法,有兴趣的朋友们可以跟着学习参考下。
    2021-11-11
  • Fastadmin框架自定义搜索操作流程

    Fastadmin框架自定义搜索操作流程

    这篇文章主要介绍了Fastadmin框架自定义搜索操作流程,包括html标签、js调整、PHP修改,需要的朋友可以参考下
    2023-08-08
  • PHP清除字符串中所有无用标签的方法

    PHP清除字符串中所有无用标签的方法

    这篇文章主要介绍了PHP清除字符串中所有无用标签的方法,涉及针对字符串中空格、html标签等的清除,是非常实用的技巧,需要的朋友可以参考下
    2014-12-12
  • PHP如何从txt文件中读取数据详解

    PHP如何从txt文件中读取数据详解

    这篇文章主要给大家介绍了关于PHP如何从txt文件中读取数据的相关资料,文中通过实例代码以及图文介绍的非常详细,对大家学习或者使用PHP具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • PHP面相对象中的重载与重写

    PHP面相对象中的重载与重写

    本文主要介绍了PHP面相对象中的重载与重写。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • PHP学习之数组值的操作

    PHP学习之数组值的操作

    PHP中,用list来析取数组中的值,如list($a, $b) = $array。
    2011-04-04

最新评论