Forum Webscript.Ru

Программирование => PHP => Тема начата: xRUSha от 22 Марта 2005, 02:45:36

Название: обращение к элементу массива
Отправлено: xRUSha от 22 Марта 2005, 02:45:36
здраствуйте.
мне нужна консультация php\'ника
ситуация такая - я скачал скрипт, который мне нужно проапдейтить и на его основе сделать сайт.
но при попытке установить его сталкнулся с проблемой:
все обращения к элементам массивов в этих скриптах были в такой вот форме


$home = $_SERVER[DOCUMENT_ROOT];
....
$pwd = $_COOKIE[password];
...
$bar = $foo [pass]


т.е. без ковычек в индексе.
я всегда был уверен, что обращатся к элементу массива нужно по индексу или числовому $foo[0] или строковому $foo["dsasda"], но если используется строковый индекс, то его необходимо брать в ковычки.

а прочитав этот код я понимаю что был неправ, т.к. он работает на сервере.

собственно мой вопрос такой - в каких случаях к элементу массива можно обращатся через строковый индекс без ковычек. может какое-нить значение php.ini? на php.net я ничего на эту тему не нашел (может плохо искал?)
Название: обращение к элементу массива
Отправлено: Заглянувший от 22 Марта 2005, 07:24:07
Об этом написано в мануале по PHP. Без кавычек работать будет (пока), но это не правильно.
Название: обращение к элементу массива
Отправлено: Меняздесьдавнонет от 22 Марта 2005, 08:35:30
Цитировать
а прочитав этот код я понимаю что был неправ

С чего ты взял, что это ты был неправ? неправ как раз автор скрипта.
Цитировать
в каких случаях к элементу массива можно обращатся через строковый индекс без кавычек

НИ В КАКИХ.
без кавычек он перестаёт быть строковым.

и слово кАААААААААААААвычка пишется через А.
постарайся это запомнить, неграмотный друг мой.
Название: обращение к элементу массива
Отправлено: xRUSha от 22 Марта 2005, 15:03:24
Цитировать

Об этом написано в мануале по PHP. Без кавычек работать будет (пока), но это не правильно.

где это написано - ткни меня носом если не сложно. я не нашел

Цитировать

НИ В КАКИХ.
без кавычек он перестаёт быть строковым.


но работает же. вот мне и хочется выяснить в при каких условиях. как должен быть настроен пхп и какая нужна версия чтоб это работало
Название: обращение к элементу массива
Отправлено: Меняздесьдавнонет от 22 Марта 2005, 15:12:15
Цитировать
xRUSha:
где это написано - ткни меня носом если не сложно. я не нашел

в докуметации на массивы, тормоз.
Цитировать
xRUSha:
но работает же.

это тебе мерещится.
Цитировать
xRUSha:
вот мне и хочется выяснить в при каких условиях.

НИ ПРИ КАКИХ.
Не понял ещё? Ну так перечитай ещё раз.

кто ты такой, вообще? Тебе сказали, как правильно. Взял под козырёк и ушуршал исполнять. Рассуждать мал ещё. понятно?
Всё, вопрос закрыт.
СТРОКИ
В ПХП
ПИШУТСЯ В КАВЫЧКАХ

А найдёшь ты или не найдешь в мануале - это уже дело десятое. Доказывать тебе никто ничего не должен. Тебя достаточно проинформировать. тнформацию ты получил. Свободен
Название: обращение к элементу массива
Отправлено: Меняздесьдавнонет от 22 Марта 2005, 17:23:06
короче.
Меня бесит, когда ламеры стоят на своём, НЕПРАВИЛЬНОМ мнении.
И сразу уже не хочется что-то объяснять.
потому, что одно дело - это когда человек принял к сведению, и спросил - "а почему". И совсем другое - когда от горшка два вершка, а всё равно "как сделать, чтобы работало".
послеждний шанс. Объясняю.
Хотя вероятность дохождения черезвычайно мала.

Почему нужно писать ключи массивов правильно, а не так, как это рекомендует делать малограмотный Руслан Курепин?

Строки в PHP должны заключаться в кавычки. По этому признаку, собственно, интерпретатор и отличает строки от других элементов программы. Если же мы написали строку без кавычек, то PHP сначала решит, что это константа и попытается подставить её значение. Не найдя константу, PHP предположит, что нерадивый программист просто забыл подставить кавычки. Интерпретатор пожалеет несчастного и продолжит разбор программы, но при этом сообщит програмисту всё, что о нём думает. Но только если его попросить об этом.
А просить надо всегда.
Хлеб программиста - тяжек и горек. Незаметные ошибки подстерегают его на каждом шагу, и на то, чтобы поймать хотя бы одну, уходят многие и многие часы (ну кроме случаев, когда ты вываливаешь свой код на форум и толпа людей, которым больше ну совершенно нечем заняться, лихо начинают это делать за тебя).
Интерпретатор, по мере сил и способностей, пытается помочь программисту. В частности, подсказывая, что переменная или константа, к которой он обращается, не существует.
Для этого писать программы надо при уровне отображения ошибок E_ALL. Обязательно.
Поскольку помимо отлова ошибок, эта директива помогает и от взлома. Ведь, если мы всегда обращаемся только к объявленным переменным, значит, нам гарантированно ничего в скрипт не подсунет злобный хакер снаружи, какое бы значение ни принимала директива register_globals.
Поэтому, вопреки распространённому заблуждению, нотайсы, которые выдаёт PHP при E_ALL - это не досадная надоедливая фича, внесённая разработчиками PHP в язык только для того, чтобы досадить программистам, а насущная необходимость.

Отсюда следует простой вывод.
Программы надо писать так, чтобы сообщение о возможной ошибке (которым является нотайс), указывало именно на возможную ошибку. А не на нашу неряшливость. Экономия двух спичек на массиве несоразмерима с проблемами, которые она может вызвать.
Название: обращение к элементу массива
Отправлено: xRUSha от 22 Марта 2005, 18:34:39
отвечать не хочется

тем более одному из
Цитировать

толпы людей, которым больше ну совершенно нечем заняться
Название: обращение к элементу массива
Отправлено: Заглянувший от 23 Марта 2005, 09:03:41
Цитировать
xRUSha:
где это написано - ткни меня носом если не сложно. я не нашел

http://ru.php.net/manual/ru/language.types.array.php#language.types.array.donts