Remova os valores duplicados de uma matriz simples

No php, existem algumas maneiras de criar uma matriz de valores exclusivos a partir de uma matriz existente. A maneira mais simples e legível de criar um array de valores exclusivos como desenvolvedor é array_unique, mas isso vem com alguns problemas de escalabilidade, pois o tempo de execução de pior caso se torna um obstáculo conforme o tamanho do array aumenta.

A maneira mais rápida de conseguir isso é usar a array_flipfunção embutida no PHP [1]. array_flipirá trocar os valores do array por suas chaves e, uma vez que um array não pode ter chaves duplicadas, você terminará com um conjunto único de chaves que corresponde aos valores do array original. Para recuperar essas chaves como valores, você pode usar a array_keysfunção para recuperar seus valores exclusivos.

Ambos array_flipe array_keyssão funções O (n) de pior caso, enquanto array_unique tem um pior caso de O (n log (n)). [2]

$array = array(1, 2, 2, 3, 5, 8, 9, 1, 3);
$unique
= array_keys(array_flip($array));

Para que isso funcione, os valores do array devem ser strings ou inteiros. Essencialmente, os valores do array também devem representar uma chave do array.

[1] http://www.php.net/manual/en/function.array-unique.php#70786
[2] http://stackoverflow.com/questions/8321620/array-unique-vs-array-flip