Reputation: 8101
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
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
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