Це питання стосується лише мене, оскільки я завжди люблю писати оптимізований код, який може працювати також на дешевих повільних серверах (або серверах з ВЕЛИКИМ трафіком)
Я озирнувся і не зміг знайти відповіді. Мені було цікаво, що швидше між цими двома прикладами, маючи на увазі, що ключі масиву в моєму випадку не важливі (псевдокод, природно):
<?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
}
}
?>
Оскільки суть питання не в зіткненні масиву, я хотів би додати, що якщо ви боїтесь зіткнення вставок для $a[$new_value]
, ви можете використовувати $a[md5($new_value)]
. він все одно може спричинити зіткнення, але позбавить можливої атаки DoS під час читання з наданого користувачем файлу ( http://nikic.github.com/2011/12/28/Supercolliding-a-PHP-array.html )