creo Dan Fego dio una maravillosa contestado cuanto a por qué se podría ordenar una matriz antes de la eliminación de duplicados; sin embargo, I ’ d desea examinar lo que hace array_flip()
. I ’ estaré utilizando la siguiente matriz para ilustrar:
'a' => 'apple'
'b' => 'banana'
'c' => 'apple'
'd' => 'date'
array_flip()
exhanges las claves y valores producir
'apple' => 'a'
'banana' => 'b'
'apple' => 'c'
'date' => 'd'
Sin embargo, las claves deben ser únicos. El manual describe cómo maneja esta array_flip()
:
Si un valor se encuentra varias veces, la última clave será usada como sus valores , y todos los demás se perderá.
por lo que obtener algo como esto:
'banana' => 'b'
'apple' => 'c'
'date' => 'd'
Así que si utilizamos array_flip(array_flip())
obtenemos:
'b' => 'banana'
'c' => 'apple'
'd' => 'date'
En cuanto a la motivación detrás de array_unique()
, sólo podemos especular menos Rasmus Lerdorf o alguien que actualmente trabaja en desarrollo de PHP se preocupa por responder.
Tendría que estar de acuerdo, mirando la documentación, hay un parámetro opcional para la clasificación, casi un don de que hacen las comparaciones internamente con la clasificación. – Tim
usando array_flip (array_flip()) le proporciona valores únicos sin la necesidad de ordenarlos. Debe haber una mejor manera seguramente? – Lizard
Bueno, eso tiene sentido, ya que los valores tendrán que ser "aplastados" ya que las claves no pueden tener duplicados. Pensando en eso, eso dejaría la operación en O (n) si las asignaciones a la matriz son de tiempo constante. Para responder a su pregunta, no estoy seguro de por qué la función incorporada no hace eso en la parte superior de mi cabeza. –