Tell me more ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

We can use array_unique() for remove duplicate entry from a single multidimensional array in php.Is it possible to use with multidimensional array? It is not working for me!

Here's what the array looks like

Array (
    [0] => Array ( [0] => 1001 [1] => john [2] => example )
    [1] => Array ( [0] => 1002 [1] => test [2] => dreamz )
    [2] => Array ( [0] => 1001 [1] => john [2] => example )
    [3] => Array ( [0] => 1001 [1] => example [2] => john )
    [4] => Array ( [0] => 1001 [1] => john [2] => example )
)

Anybody can please help me...

share|improve this question
Oh...sorry...sorry.. – mystack Aug 30 '10 at 6:31
1  
All functions like array_unique() are just a syntax sugar for really simple loops. With very little effort you can do it yourself for sure. Try to be more devious. Programming is not always just copy-pasting, sometimes it require more intelligent work. – Your Common Sense Aug 30 '10 at 6:48

3 Answers

up vote 9 down vote accepted

The user comments on the array_unique page do shed some light on this. You will most likely find some hidden gems in those comments - its a very handy documentation.

Just a quick browser through revealed the following to remove duplicates from a multi dimensional array:

<?php
function super_unique($array)
{
  $result = array_map("unserialize", array_unique(array_map("serialize", $array)));

  foreach ($result as $key => $value)
  {
    if ( is_array($value) )
    {
      $result[$key] = super_unique($value);
    }
  }

  return $result;
}
?>
share|improve this answer
Thanks for the help Russell.The code works like a champ. – mystack Aug 30 '10 at 6:30
2  
@Ajith Don't you forget something? "Thanks for the help" is a green tick next to the answer. – Your Common Sense Aug 30 '10 at 6:50

You could serialize the sub-arrays (via serialize()) into a new array, then run array_unique() on that, and then unserialize the resulting set of arrays.

share|improve this answer
function super_unique($array)
{
    $result = array_map("unserialize", array_unique(array_map("serialize", $array)));

    foreach ($result as $key => $value)
    {
        if ( is_array($value) )
        {
            $result[$key] = super_unique($value);
        }
    }

    return $result;
}
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.