Bu soru sadece benim için, çünkü her zaman ucuz yavaş sunucularda (veya ÇOK trafiği olan sunucularda) da çalışabilen optimize edilmiş kod yazmaktan hoşlanıyorum.
Etrafıma baktım ve bir cevap bulamadım. Benim durumumdaki dizinin anahtarlarının önemli olmadığını akılda tutarak bu iki örnek arasında neyin daha hızlı olduğunu merak ediyordum (doğal olarak sözde kod):
<?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
}
}
?>
Sorunun noktası dizisi çarpışma olmadığı için, ben sizin için ekler çarpışan korkuyorsun eğer eklemek isterim $a[$new_value]
, sen kullanabilirsiniz $a[md5($new_value)]
. yine de çarpışmalara neden olabilir, ancak kullanıcı tarafından sağlanan bir dosyadan okurken olası bir DoS saldırısından kurtulabilir ( http://nikic.github.com/2011/12/28/Supercolliding-a-PHP-array.html )