Pertanyaan ini hanya untuk saya karena saya selalu suka menulis kode yang dioptimalkan yang dapat berjalan juga di server lambat yang murah (atau server dengan BANYAK lalu lintas)
Saya melihat sekeliling dan saya tidak dapat menemukan jawaban. Saya bertanya-tanya apa yang lebih cepat di antara dua contoh tersebut dengan mengingat bahwa kunci array dalam kasus saya tidak penting (pseudo-code secara alami):
<?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
}
}
?>
Karena poin pertanyaannya bukanlah tabrakan array, saya ingin menambahkan bahwa jika Anda takut untuk menyisipkan bertabrakan $a[$new_value]
, Anda dapat menggunakan $a[md5($new_value)]
. itu masih dapat menyebabkan tabrakan, tetapi akan menghilangkan kemungkinan serangan DoS saat membaca dari file yang disediakan pengguna ( http://nikic.github.com/2011/12/28/Supercolliding-a-PHP-array.html )