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_flip
função embutida no PHP [1]. array_flip
irá 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_keys
função para recuperar seus valores exclusivos.
Ambos array_flip
e array_keys
sã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