【问题标题】:How can I remove ALL duplicates from an array in PHP?如何从 PHP 中的数组中删除所有重复项?
【发布时间】:2011-04-11 02:53:10
【问题描述】:

首先,我想向所有重复提问的人指出,this question 并没有完全回答我的问题。

现在,我有一个数组。我们会说数组是array(1, 2, 2, 3, 4, 3, 2)

我需要删除重复项。不只是其中一个重复,而是全部,因此结果将是array(1, 4)

我查看了array_unique(),但这只会导致array(1, 2, 3, 4)

有什么想法吗?

【问题讨论】:

  • 您可以通过将问题更改为:“如何从数组中删除重复的和重复的值?”

标签: php arrays


【解决方案1】:

您可以使用array_unique、array_diff_assoc 和array_diff 的组合:

array_diff($arr, array_diff_assoc($arr, array_unique($arr)))

【讨论】:

  • +1 表示独创性,虽然当你看到这样的一行时很难理解其意图!
  • 这比 Ciprian 的方法慢得多,我只是做了一个快速基准测试,它慢了 4 倍。有点意外。
【解决方案2】:

function removeDuplicates($array) {
   $valueCount = array();
   foreach ($array as $value) {
      $valueCount[$value]++;
   }

   $return = array();
   foreach ($valueCount as $value => $count) {
      if ( $count == 1 ) {
         $return[] = $value;
      }
   }

   return $return;
}

【讨论】:

  • 第一个循环可以更有效地替换为 $arrayCount=array_count_values($array)
  • 谢谢。我认为算法也很重要。有人已经发布了使用原生 PHP 函数的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-28
  • 2021-10-23
相关资源
最近更新 更多