<!--QuoteBegin-Scalder+Sep 11 2004, 16:18--><div class='quotetop'>QUOTE(Scalder @ Sep 11 2004, 16:18)</div><div class='quotemain'><!--QuoteEBegin-->Скажу честно... прочитав - не понял почему это плохо....<!--QuoteEnd--></div><!--QuoteEEnd-->Наверно, надо было дать ссылку на русский вариант мануала - <a href='http://php.net/manual/ru/language.types.array' target='_blank'>http://php.net/manual/ru/language.types.array</a><!--QuoteBegin--><div class='quotetop'>QUOTE</div><div class='quotemain'><!--QuoteEBegin-->Почему $foo[bar] это неверно?
Вы всегда должны заключать индекс ассоциативного массива в кавычки. К примеру, пишите $foo['bar'], а не $foo[bar]. Но почему $foo[bar] это неверно? Возможно, вы встречали в старых скриптах следующий синтаксис:
- Код: выделить все
<?php
$foo[bar] = 'враг';
echo $foo[bar];
// и т. д.
?>
Это неверно, хотя и работает. Тогда почему же это неверно? Причина в том, что этот код содержит неопределенную константу (bar), а не строку ('bar' - обратите внимание на кавычки), и PHP в будущем может определить константу, которая к несчастью для вашего кода будет иметь то же самое имя. Это работает, поскольку неопределённая константа конвертируется в строку с тем же именем. Например, если константа с именем bar не определена, то PHP заменит bar на строку 'bar' и использует ее.
Замечание: Это не означает, что нужно всегда заключать ключ в кавычки. Нет необходимости заключать в кавычки константы или переменные, поскольку это помешает PHP обрабатывать их.<!--QuoteEnd--></div><!--QuoteEEnd-->От себя лишь добавлю, что для того, чтобы понять, что это плохо, достаточно написать в начале скрипта <a href='http://php.net/ini_set' target='_blank'>ini_set</a>('display_errors',1);<a href='http://php.net/error_reporting' target='_blank'>error_reporting</a>(E_ALL); и посмотреть, что получится. Вообще все скрипты стоит отлаживать именно при таких настройках.
2
eduha: к вашим словам остаётся лишь добавить, что использовать foreach целесообразно с небольшими массивами - при работе с огромными массивами foreach приведёт к дополнительному расходу оперативки.
IRC: <a href='http://www.fileforum.ru/irc.php' target='_blank'>RUSNET #fileforum</a> (irc.tsk.ru:6669)