首页  >  文章  >  后端开发  >  php 数组去重的方法参考(一维数组去重、二维数组去重)

php 数组去重的方法参考(一维数组去重、二维数组去重)

WBOY
WBOY原创
2016-07-25 08:58:001386浏览
本文介绍下,对php数组去除重复的方法,包括一维数组的去重、二维数组的去重。有需要的朋友参考下。

首先,来看一维数组重复项的去除方法。

使用array_unique函数,例如:

<?php
  $aa=array("apple","banana","pear","apple","wail","watermalon");
  $bb=array_unique($aa);
  print_r($bb);
  //by bbs.it-home.org
?>

输出结果: Array ( [0] => apple [1] => banana [2] => pear [4] => wail [5] => watermalon ) 。

再来看下二维数组重复项的去除方法。

对于二维数组,要分两种情况讨论: 一种是因为某一键名的值不能重复,删除重复项; 另一种因为内部的一维数组不能完全相同,而删除重复项。

通过具体的例子加以说明。

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

<?php
 function assoc_unique($arr, $key)
  {
    $tmp_arr = array();
    foreach($arr as $k => $v)
   {
      if(in_array($v[$key], $tmp_arr))//搜索$v[$key]是否在$tmp_arr数组中存在,若存在返回true
     {
        unset($arr[$k]);
     }
   else {
       $tmp_arr[] = $v[$key];
     }
   }
 sort($arr); //sort函数对数组进行排序
 return $arr;
 }

 $aa = array(
 array('id' => 123, 'name' => '张三'),
 array('id' => 123, 'name' => '李四'),
 array('id' => 124, 'name' => '王五'),
 array('id' => 125, 'name' => '赵六'),
 array('id' => 126, 'name' => '赵六')
 );
 $key = 'id';
 assoc_unique(&$aa, $key);
 print_r($aa);
 //by bbs.it-home.org
?>

输出结果: Array ( [0] => Array ( [id] => 123 [name] => 张三 ) [1] => Array ( [id] => 124 [name] => 王五 ) [2] => Array ( [id] => 125 [name] => 赵六 ) [3] => Array ( [id] => 126 [name] => 赵六 ) )

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

<?php
 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;
 }

 $aa = array(
 array('id' => 123, 'name' => '张三'),
 array('id' => 123, 'name' => '李四'),
 array('id' => 124, 'name' => '王五'),
 array('id' => 123, 'name' => '李四'),
 array('id' => 126, 'name' => '赵六')
 );
 $bb=array_unique_fb($aa);
 print_r($bb);
 //by bbs.it-home.org
?>

输出结果:

Array ( [0] => Array ( [0] => 123 [1] => 张三 ) [1] => Array ( [0] => 123 [1] => 李四 ) [2] => Array ( [0] => 124 [1] => 王五 ) [4] => Array ( [0] => 126 [1] => 赵六 ) )


声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn