Автор Тема: Апострофы при обращении к элементу массива  (Прочитано 3536 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн C++

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 221
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Как сделать, чтобы можно было вот так обращаться к массиву $mass[name], т.е. без апострофов ($mass[\'name\']).
name - не переменная - просто строка.
Заранее спасибо!

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Апострофы при обращении к элементу массива
« Ответ #1 : 15 Января 2004, 18:17:50 »
Никак не сделать.
Очень странно слышать такой вопрос от человека, с таким ником. Очень.

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

Таков синтаксис языка РНР.
Есдинственный способ писать не соблюдая синтаксис языка - писать на другом.
« Последнее редактирование: 15 Января 2004, 18:30:02 от RomikChef »

Оффлайн AliMamed

  • \\o/ ali akbar \\o/
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 2409
  • +2/-0
  • 2
    • Просмотр профиля
    • http://alimamed.pp.ru
Апострофы при обращении к элементу массива
« Ответ #2 : 15 Января 2004, 18:24:22 »
а можно полюбопытствовать зачем собственно понадобилось писать "без апострофов"
ну, будем исповедоваться?

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Апострофы при обращении к элементу массива
« Ответ #3 : 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.
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн C++

  • Фанат форума
  • Постоялец
  • ***
  • Сообщений: 221
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
Апострофы при обращении к элементу массива
« Ответ #4 : 18 Января 2004, 19:57:39 »
AliMamed Дали переделать скрипт, так вот там все без кавычек, а если все править, то очень долго и нехотелось, задача исправить было другое и понять, что он делает.

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

RomikChef Извини, но можно без поучений :abuse:  , я спросил только то, что я спросил и ничего более.

Оффлайн Neter

  • Жустер
  • Старожил
  • ****
  • Сообщений: 324
  • +0/-0
  • 2
    • Просмотр профиля
Апострофы при обращении к элементу массива
« Ответ #5 : 18 Января 2004, 23:56:22 »
C++ На Ромика не кати, он тебе всё популярно обьяснил.
Ты в состоянии перевести то что тебе Макс процитировал?..

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

Найти: \\$(\\w+)\\[(\\[a-zA-Z]+)\\]
Заменить на: $$1[\'$2\']
Мне тормоз послужил толчком...

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Апострофы при обращении к элементу массива
« Ответ #6 : 19 Января 2004, 01:06:21 »
Neter, дело в том, что наш добренький Максик, чтоб его черти забрали, все время торопится угодить каждому встречному ламеру.
И рассказывает не как правильно сделать, а так, как изволит их ламерское величество.
И этот ламерский ответ ушел на емейл.

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

С++
Без поучений нельзя.
Если у тебя у самоо ума не хватает, то где, как не здесь тебя учить.
Если не нравится - тебя здесь никто не держит.

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Апострофы при обращении к элементу массива
« Ответ #7 : 19 Января 2004, 01:48:38 »
RomikChef
Цитировать
Поэтому скоро я буду нахрен буду удалять его посты вообще не глядя - на всякий случай.

[off] во-первых совесть не позволит.
 Во-вторых, в этом случае, я свои ответы на ПС дублировать буду :P
В-третьих, есть кандидаты, которым проще один раз ответить "неправильно", чем 20 страниц объяснять как сделать правильно и почему им стоит искать другую работу[/off]
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн Меняздесьдавнонет

  • новичЕк
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 5698
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
Апострофы при обращении к элементу массива
« Ответ #8 : 19 Января 2004, 02:06:59 »
дублируй хоть в спортлото.

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28