Chinaunix首页 | 论坛 | 博客
  • 博客访问: 460561
  • 博文数量: 141
  • 博客积分: 211
  • 博客等级: 入伍新兵
  • 技术积分: 1049
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-17 16:25
个人简介

如此经年,望尽千帆。

文章分类

全部博文(141)

文章存档

2014年(73)

2013年(65)

2012年(3)

我的朋友

分类: PHP

2013-12-15 08:11:42

介绍了php数组去重实例及分析。需要的朋友可以过来参考下,希望对大家有所帮助
 
一维数组的重复项:
使用array_unique函数即可,使用实例如下:

  1. <?php
  2.   $aa=array("apple","banana","pear","apple","wail","watermalon");
  3.   $bb=array_unique($aa);
  4.   print_r($bb);
  5. ?>

结果如下:Array ( [0] => apple [1] =>banana [2] => pear [4] => wail [5]=> watermalon ) 。
二维数组的重复项:
对于二维数组咱们分两种情况讨论,一种是因为某一键名的值不能重复,删除重复项;另一种因为内部的一维数组不能完全相同,而删除重复项,下面举例说明:

㈠因为某一键名的值不能重复,删除重复项

  1. <?php
  2.   function assoc_unique($arr, $key)
  3.    {
  4.      $tmp_arr = array();
  5.      foreach($arr as $k => $v)
  6.     {
  7. if(in_array($v[$key],$tmp_arr))//搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回true
  8.       {
  9.   unset($arr[$k]);
  10.       }
  11.     else {
  12.  $tmp_arr[] = $v[$key];
  13.       }
  14.     }
  15.   sort($arr); //sort函数对数组进行排序
  16.   return $arr;
  17.   }
  18.   $aa = array(
  19.   array('id' => 123, 'name' =>'张三'),
  20.   array('id' => 123, 'name' =>'李四'),
  21.   array('id' => 124, 'name' =>'王五'),
  22.   array('id' => 125, 'name' =>'赵六'),
  23.   array('id' => 126, 'name' =>'赵六')
  24.   );
  25.   $key = 'id';
  26.   assoc_unique(&$aa, $key);
  27.   print_r($aa);
  28.   ?>
显示结果为:Array ( [0] => Array ( [id] =>123 [name] => 张三 ) [1] => Array ([id] => 124 [name] => 王五 ) [2]=> Array ( [id] => 125 [name]=> 赵六 ) [3] => Array ( [id]=> 126 [name] => 赵六 ) )

㈡因内部的一维数组不能完全相同,而删除重复项

  1. <?php
  2.   function array_unique_fb($array2D){
  3. foreach ($array2D as $v){
  4.     $v = join(",",$v); //降维,也可以用implode,将一维数组转换为用逗号连接的字符串
  5.     $temp[] = $v;
  6. }
  7. $temp =array_unique($temp); //去掉重复的字符串,也就是重复的一维数组
  8.       foreach ($temp as $k => $v){ //
  9.    $temp[$k] = explode(",",$v); //再将拆开的数组重新组装
  10.       }
  11.       return $temp;
  12.   }
  13.   $aa = array(
  14.   array('id' => 123, 'name' =>'张三'),
  15.   array('id' => 123, 'name' =>'李四'),
  16.   array('id' => 124, 'name' =>'王五'),
  17.   array('id' => 123, 'name' =>'李四'),
  18.   array('id' => 126, 'name' =>'赵六')
  19.   );
  20.   $bb=array_unique_fb($aa);
  21.   print_r($bb)
  22.   ?>
显示结果:Array ( [0] => Array ( [0] =>123 [1] => 张三 ) [1] => Array ( [0]=> 123 [1] => 李四 ) [2]=> Array ( [0] => 124 [1]=> 王五 ) [4] => Array ( [0]=> 126 [1] => 赵六 )) 
阅读(616) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~