Diese Frage ist nur für mich, da ich immer gerne optimierten Code schreibe, der auch auf billigen langsamen Servern (oder Servern mit viel Verkehr) ausgeführt werden kann.
Ich sah mich um und konnte keine Antwort finden. Ich habe mich gefragt, was zwischen diesen beiden Beispielen schneller ist, wenn ich bedenke, dass die Schlüssel des Arrays in meinem Fall nicht wichtig sind (Pseudocode natürlich):
<?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
}
}
?>
Da der Punkt der Frage nicht die Array-Kollision ist, möchte ich hinzufügen, dass $a[$new_value]
Sie verwenden können , wenn Sie Angst vor kollidierenden Inserts haben $a[md5($new_value)]
. Es kann immer noch Kollisionen verursachen, würde jedoch einen möglichen DoS-Angriff verhindern, wenn aus einer vom Benutzer bereitgestellten Datei gelesen wird ( http://nikic.github.com/2011/12/28/Supercolliding-a-PHP-array.html ).