欢迎访问宙启技术站
智能推送

如何使用PHP的array_unique函数移除数组中的重复值。

发布时间:2023-06-11 12:29:26

在PHP中,一个常见的问题是如何从一个数组中移除重复的值。这时,可以使用 PHP 提供的 array_unique 函数来实现这一目标。

array_unique 函数的基本语法是: array_unique(array) 

其中,array 是待去重的数组。该函数会返回一个新的数组,其中仅包含原数组中的独特元素。如果原数组中有几个副本,那么它们将在新数组中只出现一次。新数组的索引将从零开始,保留元素的原始顺序。

下面是一个简单的示例,说明如何使用 array_unique 函数来去除数组中的重复值:

  <?php

  $arr = array(1, 2, 3, 4, 2, 3, 4, 5);

  $arr = array_unique($arr);

  print_r($arr);

  ?>

运行上面的示例代码,输出结果如下:

  Array

  (

      [0] => 1

      [1] => 2

      [2] => 3

      [3] => 4

      [7] => 5

  )

可以看到,原始数组中有两个2,两个3和两个4。array_unique 函数返回一个新数组,其中仅包含一个2、一个3和一个4。这个新数组中的索引按照原始数组的顺序进行排序,因此它保留了元素的原始顺序。

除了数组之外,array_unique 函数也可以用于其他类型的变量,如字符串。但是,它仅对一维数组有效。如果要去除多维数组中的重复值,需要使用递归功能或编写自定义函数来执行此操作。

一个更复杂的示例,展示了如何使用 array_unique 函数来移除多维数组中的重复值:

  <?php

  function unique_multidim_array($array, $key) {

      $temp_array = array();

      $i = 0;

      $key_array = array();

    

      foreach($array as $val) {

          if(!in_array($val[$key], $key_array)) {

              $key_array[$i] = $val[$key];

              $temp_array[$i] = $val;

          }

          $i++;

      }

      return $temp_array;

  }

  

  $arr = array(

      array('id' => 'value1', 'name' => 'John'),

      array('id' => 'value2', 'name' => 'Jane'),

      array('id' => 'value1', 'name' => 'Lisa'),

      array('id' => 'value3', 'name' => 'Mark'),

      array('id' => 'value2', 'name' => 'Peter')

  );

  

  $arr = unique_multidim_array($arr, 'id');

  print_r($arr);

  ?>

运行上面的示例代码,输出结果如下:

  Array

  (

      [0] => Array

          (

              [id] => value1

              [name] => John

          )

  

      [1] => Array

          (

              [id] => value2

              [name] => Jane

          )

  

      [2] => Array

          (

              [id] => value3

              [name] => Mark

          )

  )

该示例中的函数 unique_multidim_array 接受一个包含多个关联数组的数组和一个键名作为参数。它使用一个临时数组来存储结果,并使用 in_array 函数来检查数组中的重复键。如果找不到重复的键,它将将该数组元素添加到结果数组中。

在该示例中,原始数组包含五个关联数组。其中两个数组具有相同的“id”值。使用 unique_multidim_array 函数可以将该数组压缩为仅包含三个数组,其中每个“id”值仅出现一次。

总结:

PHP 的 array_unique 函数可以使用简单的语法来移除数组中的重复值。它可以被用于一维数组和其他类型的变量,但不能用于多维数组。如果要去除多维数组中的重复值,需要使用递归功能或编写自定义函数来执行此操作。在完成去重元素的操作后,将会生成一个新的数组,其中仅包含原始数组中的独特元素,并按照原始数组的顺序进行排序。