Je pense que Dan Fego a donné une merveilleuse réponse à pourquoi on trier un tableau avant la suppression des doublons; Cependant, je voudrais examiner ce que fait array_flip()
. Je ’ vais utiliser le tableau suivant pour illustrer:
'a' => 'apple'
'b' => 'banana'
'c' => 'apple'
'd' => 'date'
array_flip()
exhanges les clés et les valeurs de production
'apple' => 'a'
'banana' => 'b'
'apple' => 'c'
'date' => 'd'
Cependant, les clés doivent être uniques. Le manual décrit comment array_flip()
poignées ceci:
Si une valeur a plusieurs occurrences, la dernière clé sera utilisée comme ses valeurs, et tous les autres seront perdus.
donc nous obtenons quelque chose comme ceci:
'banana' => 'b'
'apple' => 'c'
'date' => 'd'
Donc, si nous utilisons array_flip(array_flip())
nous obtenons:
'b' => 'banana'
'c' => 'apple'
'd' => 'date'
En ce qui concerne la motivation derrière array_unique()
, nous ne pouvons que spéculer à moins que Rasmus Lerdorf ou quelqu'un qui travaille actuellement sur le développement PHP se soucie de répondre.
Je serais d'accord, en regardant la documentation, il y a un paramètre facultatif pour le tri, presque un mort donne qu'ils font les comparaisons en interne avec le tri. – Tim
en utilisant array_flip (array_flip()) vous donne des valeurs uniques sans avoir besoin de trier. Il doit sûrement y avoir un meilleur moyen? – Lizard
Eh bien, cela a du sens, car les valeurs devront être "écrasées" car les clés ne peuvent pas avoir de doublons. En y réfléchissant, cela laisserait l'opération à O (n) si les affectations au tableau sont à temps constant. Pour répondre à votre question, je ne sais pas pourquoi la fonction intégrée ne le fait pas du haut de ma tête. –