Cette question ne concerne que moi, car j'aime toujours écrire un code optimisé qui peut fonctionner même sur des serveurs lents et bon marché (ou des serveurs avec BEAUCOUP de trafic).
J'ai regardé autour de moi et je n'ai pas pu trouver de réponse. Je me demandais ce qui est plus rapide entre ces deux exemples en gardant à l'esprit que les clés du tableau dans mon cas ne sont pas importantes (pseudo-code naturellement) :
<?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
}
}
?>
Comme le sujet de la question n'est pas la collision de tableaux, je voudrais ajouter que si vous avez peur de la collision d'insertions pour $a[$new_value]
vous pouvez utiliser $a[md5($new_value)]
. cela peut encore provoquer des collisions, mais cela empêcherait une éventuelle attaque DoS lors de la lecture d'un fichier fourni par l'utilisateur ( http://nikic.github.com/2011/12/28/Supercolliding-a-PHP-array.html )