Esta pregunta es solo para mí, ya que siempre me gusta escribir código optimizado que pueda ejecutarse también en servidores lentos y baratos (o servidores con MUCHO tráfico)
Miré a mi alrededor y no pude encontrar una respuesta. Me preguntaba qué es más rápido entre esos dos ejemplos teniendo en cuenta que las claves de la matriz en mi caso no son importantes (pseudocó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 el punto de la pregunta no es la colisión de la matriz, me gustaría agregar que si tiene miedo de colisionar las inserciones $a[$new_value]
, puede usar $a[md5($new_value)]
. aún puede causar colisiones, pero evitaría un posible ataque DoS al leer un archivo proporcionado por el usuario ( http://nikic.github.com/2011/12/28/Supercolliding-a-PHP-array.html )