Разработчику. Сборник рецептов PHP
Задавайте вопросы

Обработка внешних переменных
с точками в именах

Вернуться назад

Задача

Необходимо обработать переменную с точкой в имени, но после того как форма представлена, не удается найти эту переменную.

Решение

Замените точку в имени переменной на символ подчеркивания. Например, если в форме находится элемент ввода с именем foo.bar, то доступ к нему в PHP осуществляется как к переменной $_REQUEST['foo_bar'].

Обсуждение

В PHP точка выступает в качестве оператора конкатенации строк, поэтому переменная формы, названная animal.height, автоматически преобразуется в переменную с именем animal_height, что позволяет избежать создания неопределенности для анализатора. Элементу $_REQUEST['animal.height'] такая неопределенность не свойственна, но из соображений преемственности и совместимости преобразование происходит независимо от значения параметра register_globals.

Как правило, автоматическое преобразование имени переменной встречается при обработке изображений, используемых для представления формы. Допустим, у вас есть карта, оказывающая расположение вашего магазина, и вы хотите, чтобы пользователь щелкнул по ней для получения дополнительной информации. Приведем пример:

<input type="image" name="locations" src="locations.gif">

Когда пользователь щелкает по изображению, то координаты x и y передаются как переменные locations.x и locations.y. Поэтому в PHP для определения координат точки, на которой пользователь выполнил щелчок, нужно проверить элементы $_REQUEST['locations_x'] и$_REQUEST['locations_y']. С помощью ряда манипуляций можно создать переменную внутри PHP с точкой в имени:

${"a.b"} = 123;      // принудительное приведение с помощью {}

$var = "c.d";      // косвенное именование переменной
$$var = 456;

print ${"a.b"} . "\n";
print $$var . "\n";
123
456

Обычно это не приветствуется из-за неудобного синтаксиса.

См. также

Документацию по внешним для PHP переменным на http://www.php.net/language.variables.external.php.

Вернуться назад

Рейтинг@Mail.ru

Яндекс.Метрика

Индекс цитирования


Рейтинг Сайтов ДОСКИ.РУ