2010-08-10 6 views
0
print_r($tokens); 
$tokens = array_unique($tokens); 
print_r($tokens); 

donne la sortie suivante:Trouble with array_unique

Array 
(
    [0] => Array 
     (
      [Class_ID] => 32709 
     ) 

    [1] => Array 
     (
      [Class_ID] => 34682 
     ) 

    [2] => Array 
     (
      [Class_ID] => 34818 
     ) 

) 
Array 
(
    [0] => Array 
     (
      [Class_ID] => 32709 
     ) 

) 

Je ne veux pas que ce soit de changer quoi que ce soit avec cette array_unique, puisque les valeurs class_id sont différentes .. whats up?

Répondre

0

fonction de trouvé php.net qui n'array_unique sur les tableaux multidimensionnels:

function super_unique($array) //array unique for multi 
{ 
    $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; 
} 
3

De documentation:

Note: Deux éléments sont considérés comme égaux si et seulement si

(string) $elem1 === (string) $elem2 

En d'autres termes: lorsque la représentation de chaîne est le même. Le premier élément sera utilisé.

Tous vos éléments toString sont Array.

+0

Ah, ne savait pas. Je l'ai résolu en spécifiant SORT_NUMERIC sur le paramètre sort_flag. – babonk

+0

C'est exact, vous devrez les passer en revue avec 'in_array()' pour voir si vous avez des doublons. – alex

+0

@alex, voir ci-dessus j'ai été en mesure de l'obtenir avec ce paramètre – babonk