Heim  >  Artikel  >  Backend-Entwicklung  >  php 数组去重的方法参考(一维数组去重、二维数组去重)

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

WBOY
WBOYOriginal
2016-07-25 08:58:001375Durchsuche
本文介绍下,对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] => 赵六 ) )


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn