Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: непонятный синтаксис в масивах
Форумы портала PHP.SU » PHP » Программирование на PHP » непонятный синтаксис в масивах

Страниц (1): [1]
 

1. DlTA - 28 Октября, 2010 - 15:45:59 - перейти к сообщению
правлю чужой PHP код на некотором сайте и встретил такой код:
PHP:
скопировать код в буфер обмена
  1. if ($T[key]=="E") {$T[key]="0"; $terr="<br><i>текст</i>";}
  2. if ($T[key]=="D") {$T[key]="1"; $terr="<br><i>какой то текст</i>";}
  3. if ($T[key]=="O") {$T[key]="2"; $terr="<br><i>еще какой то текст</i>";}

(код слегка поправил НО)
никак не могу понять как вообще может подобное работать (хотя не уверен что оно и щас работает)
ведь насколько я знаю индексом в масиве выступает или строка или переменная
а в данном случае key вообще непонятно что.
может кто разъяснить в какой версии PHP синтаксис подобные изыскания разрешает?
2. SAD - 28 Октября, 2010 - 16:08:10 - перейти к сообщению
Возможно key константа, тогда все будет верно. Но на самом деле ключ должен быть в кавычках. Это уже где то обсуждалось
3. Uchkuma - 28 Октября, 2010 - 16:09:13 - перейти к сообщению
Строка вне кавычек интерпретируется как константа. Если данная константа не была ранее определена, ее имя будет определено как строка, а также будет сгенерирована ошибка типа E_NOTICE.
4. DlTA - 28 Октября, 2010 - 16:25:55 - перейти к сообщению
SAD пишет:
Возможно key константа...

совсем забыл про константы
но во всех файлах проекта отсутствует константа "key"

и в базе из которой вытягивается $T присутствует поле "key"
поэтому и логически не вижу смысла (для разработчика) создавать константу key=="key"
5. Саныч - 28 Октября, 2010 - 16:27:59 - перейти к сообщению
Если у вас все работает, значит где-то эта key все-таки определяется... Если же нет, то должно вылазить предупреждение...
6. DlTA - 28 Октября, 2010 - 16:30:27 - перейти к сообщению
Uchkuma пишет:
Строка вне кавычек интерпретируется как константа. Если данная константа не была ранее определена, ее имя будет определено как строка, а также будет сгенерирована ошибка типа E_NOTICE.

спасибо
значит все же это не корректный синтаксис.
и намеченные исправления необходимы.

Саныч пишет:
Если у вас все работает, значит где-то эта key все-таки определяется... Если же нет, то должно вылазить предупреждение...

сервер не выдает ошибок, если проблемы с синтаксисом он возвращает пустую страничку (дебажить просто "радость")
7. OrmaJever - 28 Октября, 2010 - 16:52:07 - перейти к сообщению
DlTA пишет:
ведь насколько я знаю индексом в масиве выступает или строка или переменная
а в данном случае key вообще непонятно что.

php умная програма Подмигивание Если нету такой константы то php ищет индекс масива key.

Правельнее ставить индексы масивов в кавычки $T['key']
8. Uchkuma - 28 Октября, 2010 - 16:54:57 - перейти к сообщению
OrmaJever пишет:
php умная програма
Тут больше подходит "PHP - программа для дураков" ))
9. JustUserR - 29 Октября, 2010 - 12:23:43 - перейти к сообщению
OrmaJever пишет:
Если нету такой константы то php ищет индекс масива key
Использование схемы обращения к именованным ключам ассоциативной массиве в языке PHP в большой мере унаследовано от Perl в котором определены следующие правила - все находящиеся в исходном выполняемом коде последовательности латинских букв без включенных пробелов и специальных символов - трактуются как строковые константы во всех случаях когда для данного typeglob-поля не определены соответствующие программные элементы - таким образом значение key в явном виде является полноценной строковой константой

 

Powered by ExBB FM 1.0 RC1