Rob
Rob

Reputation: 8101

How can I remove ALL duplicates from an array in PHP?

First of all, I'd like to point out to all you duplicate question hunters that this question does not fully answer my question.

Now, I've got an array. We'll say that the array is array(1, 2, 2, 3, 4, 3, 2)

I need to remove the duplicates. Not just one of the duplicates, but all, so that the result will be array(1, 4)

I looked at array_unique(), but that will only result in array(1, 2, 3, 4)

Any ideas?

Upvotes: 13

Views: 4021

Answers (2)

Gumbo
Gumbo

Reputation: 655815

You could use the combination of array_unique, array_diff_assoc and array_diff:

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

Upvotes: 17

Ciprian L.
Ciprian L.

Reputation: 597


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;
}

Upvotes: 8

Related Questions