У меня есть необходимость использовать такие переменные: Код (Text): $var[$item[DEFINED_VAR.'_name']] Всё прекрасно работает, но в мануале php написано, что обязательно нужно использовать одинарные кавычки в подобных переменных, т.е. $var['var'] правда так и не особо понял почему, не очень силён в английском (можете кстати объяснить почему нужны одинарные кавычки?), но всё же, нужно ли в моём случае использовать кавычки, и если да, то как?
т.е. так правильно использовать? Код (Text): $var[$item[DEFINED_VAR.'_name']] И можете объяснить почему нужны одинарные кавычки? выходит что в моей конструкции их нет, как их туда поставить?
они не нужны. они отличаются от двойных. а какие нужны и что правильно - это надо решать по ситуации.
Одинарные двойные кавычки нужны что бы пхп понял что это не переменная не константа а именно индекс для массива. , Пхп ищет массвив который находится в $item и имеет индекс который получается конкатенацией константы DEFINED_VAR с строкой '_name'
Просто в Код (Text): $var[$item[DEFINED_VAR.'_name']] одинарные кавычки не заключишь, т.е. ГРУБО (схематично) говоря так: Код (Text): $var[ ' $item[DEFINED_VAR.'_name'] ' ] Вспомнил откуда родился вопрос, нашёл на русском на php.net: Код (Text): $foo[bar] = 'враг'; echo $foo[bar]; Это неверно, хотя и работает. Причина в том, что этот код содержит неопределенную константу (bar), а не строку ('bar' - обратите внимание на кавычки), и PHP в будущем может определить константу, которая, к несчастью для вашего кода, будет иметь то же самое имя. Это работает, потому что PHP автоматически преобразует "голую строку" (не заключенную в кавычки строку, которая не соответствует ни одному из известных символов языка) в строку, со значением этой "голой строки". Например, если константа с именем bar не определена, то PHP заменит bar на строку 'bar' и использует ее.
Ну, это может спасать, если знаешь, что такую константу в php вряд ли когда введут. echo "data[ololo] = $data[ololo], ahaha";
Не знаю, много раз делал так: <?php $a = array (); $a["one"] = 1; echo $a["one"]; ?> и всё работало. Там нужны просто кавычки, любые, чтоб php понял, что это строка, а не именованная константа. Т.е. если написать $a[one], php будет искать константу с именем one, не найдёт, выдаст матное слово, и использует строку "оne" в качестве индекса.