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

如何使用array_unique()函数去重一个数组

发布时间:2023-06-30 15:33:47

array_unique()函数是PHP内置的数组去重函数,用于去除数组中的重复元素。其使用方法如下:

1. 利用array_unique()函数去重一个一维数组。

   $array = [1, 2, 3, 3, 4, 5, 5];
   $uniqArray = array_unique($array);
   print_r($uniqArray);
   

输出结果:Array ( [0] => 1 [1] => 2 [2] => 3 [4] => 4 [5] => 5 )

这样就可以得到一个去重后的一维数组。

2. 利用array_unique()函数去重一个多维数组。

   $array = [['a', 'b', 'c'], ['a', 'b', 'c'], ['d', 'e', 'f']];
   $uniqArray = array_map('unserialize', array_unique(array_map('serialize', $array)));
   print_r($uniqArray);
   

输出结果:Array ( [0] => Array ( [0] => a [1] => b [2] => c ) [2] => Array ( [0] => d [1] => e [2] => f ) )

这里的多维数组通过array_map('serialize', $array)将每个子数组转换成字符串,再通过array_unique()函数去重,再通过array_map('unserialize', $uniqArray)将字符串转回为子数组。

3. 自定义比较函数去重。

   function compare($a, $b) {
       return $a['id'] - $b['id'];
   }
   $array = [
       ['id' => 1, 'name' => 'Alice'],
       ['id' => 2, 'name' => 'Bob'],
       ['id' => 1, 'name' => 'John']
   ];
   usort($array, 'compare');
   $uniqArray = [];
   $prev = null;
   foreach ($array as $item) {
       if ($item['id'] !== $prev) {
           $uniqArray[] = $item;
       }
       $prev = $item['id'];
   }
   print_r($uniqArray);
   

输出结果:Array ( [0] => Array ( [id] => 1 [name] => Alice ) [1] => Array ( [id] => 2 [name] => Bob ) )

这里的自定义比较函数compare()通过比较id字段的值来判断两个元素是否相等。然后使用usort()函数对数组按照id升序排序。最后通过循环判断相邻两个元素的id是否相等,不相等则保留。

总结:

array_unique()函数能简单方便地去重一个一维数组,对于多维数组需要使用serialize()函数将子数组转换成字符串,再通过array_map()、array_unique()和array_map()函数实现去重。若要使用自定义的比较函数去重数组,可以使用排序函数如usort()和自己编写的循环方式。这些方法能满足不同场景下的去重需求。