PHP二维数组的去重问题解析

 更新时间:2011年07月17日 16:41:15   作者:  
PHP数组去除重复项有个内置函数array_unique(),但是php的array_unique函数只适用于一维数组,对多维数组并不适用,以下提供一个二维数组的array_unique函数。
之前写了一篇关于数组去重的文章,但是仅限于一维数组。下面的函数可以用于二维数组:
复制代码 代码如下:

//二维数组去掉重复值
function array_unique_fb($array2D)
{
foreach ($array2D as $v)
{
$v = join(",",$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
$temp[] = $v;
}
$temp = array_unique($temp); //去掉重复的字符串,也就是重复的一维数组
foreach ($temp as $k => $v)
{
$temp[$k] = explode(",",$v); //再将拆开的数组重新组装
}
return $temp;
}

如果你想保留数组的键值,可以用下面的函数:
复制代码 代码如下:

//二维数组去掉重复值 并保留键值
function array_unique_fb($array2D)
{
foreach ($array2D as $k=>$v)
{
$v = join(",",$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
$temp[$k] = $v;
}
$temp = array_unique($temp); //去掉重复的字符串,也就是重复的一维数组
foreach ($temp as $k => $v)
{
$array=explode(",",$v); //再将拆开的数组重新组装
$temp2[$k]["id"] =$array[0];
$temp2[$k]["litpic"] =$array[1];
$temp2[$k]["title"] =$array[2];
$temp2[$k]["address"] =$array[3];
$temp2[$k]["starttime"] =$array[4];
$temp2[$k]["endtime"] =$array[5];
$temp2[$k]["classid"] =$array[6];
$temp2[$k]["ename"] =$array[7];
}
return $temp2;
}

大概就这样啦。
二维数组去重
复制代码 代码如下:

<?php
$arr = array(
array('id' => 1,'name' => 'aaa'),
array('id' => 2,'name' => 'bbb'),
array('id' => 3,'name' => 'ccc'),
array('id' => 4,'name' => 'ddd'),
array('id' => 5,'name' => 'ccc'),
array('id' => 6,'name' => 'aaa'),
array('id' => 7,'name' => 'bbb'),
);
function assoc_unique(&$arr, $key)
{
$rAr=array();
for($i=0;$i<count($arr);$i++)
{
if(!isset($rAr[$arr[$i][$key]]))
{
$rAr[$arr[$i][$key]]=$arr[$i];
}
}
$arr=array_values($rAr);
}
assoc_unique(&$arr,'name');
print_r($arr);
?>

相关文章

  • php5中类的学习

    php5中类的学习

    类的结构: 类的内部能可能有三种东西,就是常量(constant),属性(property)和方法(method),功能可以理解成类外部的常量,变量和函数。
    2008-03-03
  • PHP简单创建压缩图的方法

    PHP简单创建压缩图的方法

    这篇文章主要介绍了PHP简单创建压缩图的方法,通过自定义函数实现压缩图像的功能,涉及php图片的读取与图形图像的创建相关技巧,需要的朋友可以参考下
    2016-08-08
  • php多用户读写文件冲突的解决办法

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

    解决多调用同时写一个文件时我们会使用flock来解决些问题,这样同一时间只有一个用户可以写文件,同时其它用户进行等待队列了,下面我来介绍一下flock解决多用户读写文件冲空问题
    2013-11-11
  • php获取文件名后缀常用方法小结

    php获取文件名后缀常用方法小结

    这篇文章主要介绍了php获取文件名后缀常用方法,实例分析了五种常用的php获取文件名后缀的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • php抓取页面的几种方法详解

    php抓取页面的几种方法详解

    本篇文章是对php抓取页面的几种方法进行了详细的分析介绍,需要的朋友参考下
    2013-06-06
  • php日期操作技巧小结

    php日期操作技巧小结

    这篇文章主要介绍了php日期操作技巧,涉及php日期与时间的显示格式转换技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-06-06
  • WordPress中重置文章循环的rewind_posts()函数讲解

    WordPress中重置文章循环的rewind_posts()函数讲解

    这篇文章主要介绍了WordPress中的文章循环重置函数rewind_posts()讲解,附带不依赖循环的single_cat_title()函数的用法介绍,需要的朋友可以参考下
    2016-01-01
  • PHP图片处理之图片背景、画布操作

    PHP图片处理之图片背景、画布操作

    这篇文章主要介绍了PHP图片处理之图片背景、画布操作,本文先是讲解了PHP中创建图片的几个函数,然后给出了一个给图片添加文字水印的例子,需要的朋友可以参考下
    2014-11-11
  • PHP魔术方法之__call与__callStatic使用方法

    PHP魔术方法之__call与__callStatic使用方法

    这篇文章主要介绍了PHP魔术方法之__call与__callStatic方法,需要的朋友可以参考下
    2017-07-07
  • 浅析php中三个等号(===)和两个等号(==)的区别

    浅析php中三个等号(===)和两个等号(==)的区别

    以下是对php中三个等号(===)和两个等号(==)的区别进行了详细的分析介绍,需要的朋友可以过来参考下
    2013-08-08

最新评论