Home  >  Article  >  Backend Development  >  PHP array deduplication method reference (one-dimensional array deduplication, two-dimensional array deduplication)

PHP array deduplication method reference (one-dimensional array deduplication, two-dimensional array deduplication)

WBOY
WBOYOriginal
2016-07-25 08:58:001376browse
This article introduces the method of deduplicating PHP arrays, including deduplication of one-dimensional arrays and deduplication of two-dimensional arrays. Friends in need can refer to it.

First, let’s look at how to remove duplicate items from a one-dimensional array.

Use array_unique function, for example:

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

Output result: Array ( [0] => apple [1] => banana [2] => pear [4] => wail [5] => watermalon ) .

Let’s look at how to remove duplicate items from a two-dimensional array.

For two-dimensional arrays, there are two situations to discuss: One is because the value of a certain key name cannot be repeated, so duplicate items are deleted; The other is to remove duplicates because the internal one-dimensional arrays cannot be exactly the same.

Illustrate with specific examples.

1, because the value of a certain key name cannot be repeated, delete the duplicates.

<?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
?>

Output result: Array ( [0] => Array ( [id] => 123 [name] => Zhang San) [1] => Array ( [id] => 124 [name] => Wang Wu) [2] => Array ([id] => 125 [name] => Zhao Liu) [3] => Array ( [id] => 126 [name] => Zhao Liu ) )

2. Because the internal one-dimensional arrays cannot be exactly the same, duplicate items are deleted

<?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
?>

Output result:

Array ( [0] => Array ( [0] => 123 [1] => Zhang San) [1] => Array ( [0] => 123 [1] => Li Si) [2] => Array ( [0] => 124 [1] => Wang Wu) [4] => Array ( [0] => 126 [1] => Zhao Liu ) )


Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn