Forum Webscript.Ru

Программирование => PHP => Тема начата: C++ от 15 Января 2004, 16:50:50

Название: Апострофы при обращении к элементу массива
Отправлено: C++ от 15 Января 2004, 16:50:50
Как сделать, чтобы можно было вот так обращаться к массиву $mass[name], т.е. без апострофов ($mass[\'name\']).
name - не переменная - просто строка.
Заранее спасибо!
Название: Апострофы при обращении к элементу массива
Отправлено: Меняздесьдавнонет от 15 Января 2004, 18:17:50
Никак не сделать.
Очень странно слышать такой вопрос от человека, с таким ником. Очень.

"без апострофов" - это не "просто строка", а КОНСТАНТА.
Запомни это.
Строки в РНР ограничиваются кавычками ,одинарными или двойными.
константы пишутся без кавычек.
числа - тоже.
Индексом массива может быть или целое число, или строка.
значит, обращение к элементу массива можно написать пятью способами:
Либо написав сам индекс:
$array[0]
$array[\'string\']
$array["string"]
либо подставив в качестве индекса константу или переменную
$array[CONSTANT]
$array[$variable]

Таков синтаксис языка РНР.
Есдинственный способ писать не соблюдая синтаксис языка - писать на другом.
Название: Апострофы при обращении к элементу массива
Отправлено: AliMamed от 15 Января 2004, 18:24:22
а можно полюбопытствовать зачем собственно понадобилось писать "без апострофов"
Название: Апострофы при обращении к элементу массива
Отправлено: Макс от 15 Января 2004, 19:26:54
цитата из мана
Цитировать

Why is $foo[bar] wrong?
You should always use quotes around a string literal array index. For example, use $foo[\'bar\'] and not $foo[bar]. But why is $foo[bar] wrong? You might have seen the following syntax in old scripts:


$foo[bar] = \'enemy\';
echo $foo[bar];
// etc
?>  


This is wrong, but it works. Then, why is it wrong? The reason is that this code has an undefined constant (bar) rather than a string (\'bar\' - notice the quotes), and PHP may in future define constants which, unfortunately for your code, have the same name. It works because PHP automatically converts a bare string (an unquoted string which does not correspond to any known symbol) into a string which contains the bare string. For instance, if there is no defined constant named bar, then PHP will substitute in the string \'bar\' and use that.
Название: Апострофы при обращении к элементу массива
Отправлено: C++ от 18 Января 2004, 19:57:39
AliMamed Дали переделать скрипт, так вот там все без кавычек, а если все править, то очень долго и нехотелось, задача исправить было другое и понять, что он делает.

Макс Спасибо за ответ, об изменении error_reporting в php.ini, только вот сейчас его не вижу почему-то....

RomikChef Извини, но можно без поучений :abuse:  , я спросил только то, что я спросил и ничего более.
Название: Апострофы при обращении к элементу массива
Отправлено: Neter от 18 Января 2004, 23:56:22
C++ На Ромика не кати, он тебе всё популярно обьяснил.
Ты в состоянии перевести то что тебе Макс процитировал?..

В дримвьювере есть така фича "find and replace" ставиш галку "Use Regular Expressions" и пишешь регекспину типа:

Найти: \\$(\\w+)\\[(\\[a-zA-Z]+)\\]
Заменить на: $$1[\'$2\']
Название: Апострофы при обращении к элементу массива
Отправлено: Меняздесьдавнонет от 19 Января 2004, 01:06:21
Neter, дело в том, что наш добренький Максик, чтоб его черти забрали, все время торопится угодить каждому встречному ламеру.
И рассказывает не как правильно сделать, а так, как изволит их ламерское величество.
И этот ламерский ответ ушел на емейл.

У меня несколько отличается взгляд на то, как надо отвечать на вопросы. Я не буду отвечать человеку, который спрашивает, как ему удобнее бить головой об стенку.
У макса другое мнение. Поэтому скоро я буду нахрен буду удалять его  посты вообще не глядя - на всякий случай. Пусть жалуется - я за это место не держусь.

С++
Без поучений нельзя.
Если у тебя у самоо ума не хватает, то где, как не здесь тебя учить.
Если не нравится - тебя здесь никто не держит.
Название: Апострофы при обращении к элементу массива
Отправлено: Макс от 19 Января 2004, 01:48:38
RomikChef
Цитировать
Поэтому скоро я буду нахрен буду удалять его посты вообще не глядя - на всякий случай.

[off] во-первых совесть не позволит.
 Во-вторых, в этом случае, я свои ответы на ПС дублировать буду :P
В-третьих, есть кандидаты, которым проще один раз ответить "неправильно", чем 20 страниц объяснять как сделать правильно и почему им стоит искать другую работу[/off]
Название: Апострофы при обращении к элементу массива
Отправлено: Меняздесьдавнонет от 19 Января 2004, 02:06:59
дублируй хоть в спортлото.