Esta pergunta é apenas para mim, pois sempre gosto de escrever código otimizado que pode ser executado também em servidores lentos e baratos (ou servidores com MUITO tráfego)
Olhei em volta e não consegui encontrar uma resposta. Eu queria saber o que é mais rápido entre esses dois exemplos, tendo em mente que as chaves do array no meu caso não são importantes (pseudo-código naturalmente):
<?php
$a = array();
while($new_val = 'get over 100k email addresses already lowercased'){
if(!in_array($new_val, $a){
$a[] = $new_val;
//do other stuff
}
}
?>
<?php
$a = array();
while($new_val = 'get over 100k email addresses already lowercased'){
if(!isset($a[$new_val]){
$a[$new_val] = true;
//do other stuff
}
}
?>
Como o ponto da questão não é a colisão array, eu gostaria de acrescentar que, se você tem medo de colidir inserções para $a[$new_value]
, você pode usar $a[md5($new_value)]
. ele ainda pode causar colisões, mas impediria um possível ataque DoS ao ler um arquivo fornecido pelo usuário ( http://nikic.github.com/2011/12/28/Supercolliding-a-PHP-array.html )