Если я глубоко в гнезде петель я задаюсь вопросом, какой из них является более эффективным:Заполнение массива PHP: сначала проверьте индекс?
if (!isset($array[$key])) $array[$key] = $val;
или
$array[$key] = $val;
Второй формой является гораздо более желательным, насколько читаемым кодом идет. На самом деле имена длиннее, а массив многомерен. Таким образом, первая форма выглядит довольно грубо в моей программе.
Но мне интересно, может ли вторая форма быть медленнее. Поскольку код входит в одну из наиболее часто выполняемых функций в программе, я бы хотел использовать более быструю форму.
В общем, этот код будет выполняться много раз с тем же значением «$ key». Поэтому в большинстве случаев $ array [$ key] уже будет установлен, а isset() вернет FALSE.
Чтобы уточнить для тех, кто боится, что я обрабатываю не идентичный код, как если бы он был идентичным: насколько эта часть программы имеет значение, $ val является константой. Он неизвестен до выполнения, но он установлен ранее в программе и не изменяется здесь. Таким образом, обе формы дают одинаковый результат. И это самое удобное место для $ val.
РНР руководство говорит, что «Исеть()» является «языковая конструкция», а не функция , Поэтому я ожидаю, что накладные расходы могут быть минимальными. Полагаю, мне нужно будет профилировать его и посмотреть. – 2008-10-03 20:27:37