массив $A, заполненный последовательно
числами 10, 20 и 30, с индексами, отсчитываемыми с нуля. То есть, если внутри
квад-
ратных скобок при присваивании элементу массива не указано ничего, то
подразуме-
вается элемент массива, следующий за последним. В общем-то это должно быть ин-
туитивно понятным — именно на легкость в использовании и ориентировались
разработчики PHP.
Прием с автомассивом в поле , действительно, выглядит до-
вольно элегантно. Однако не стоит думать, что он применим только к этому
элементу
формы: автомассивы мы можем применять и в любых других полях. Вот пример,
создающий 2 переключателя (кнопки со значениями вкл/выкл), один редактор строки
и одно текстовое (многострочное) поле, причем все данные после запуска сценария,
обрабатывающего эту форму, будут представлены в виде одного-единственного авто-
массива:
То есть, мы видим, что PHP совершенно нет никакого дела до того, в каких
элементах
формы мы используем автомассивы — он в любом случае обрабатывает все одинако-
во. И это, пожалуй, правильно.
Глава 8. Работа с данными формы 151
Трансляция массивов
В сущности, мы уже рассмотрели почти все возможности PHP по автоматической
трансляции данных формы. Напоследок взглянем на еще одно полезное свойство
PHP. Пусть у нас есть такая форма (листинг 8.7):
Листинг 8.7. Трансляция массивов
Имя:
Адрес:
Город:
Москва
Санкт-Петербург
Киев
Можно догадаться, что после передачи подобных данных сценарию на PHP в нем
будет инициализирован ассоциативный массив $Data с ключами name, address и
city (асcоциативные массивы мы также затрагивали пока только вскользь, но очень
скоро этот пробел будет достойно восполнен). То есть, имена полям формы можно
давать не только простые, но и представленные в виде одномерных ассоциативных
массивов.
Забегая вперед, скажу, что в сценарии к отдельным элементам формы можно будет
обратиться при помощи указания ключа массива: например, $Data['city'] обо-
значает значение той радиокнопки, которая была выбрана пользователем, а
$Data["name"] — ее имя. Заметьте, что в сценарии мы обязательно должны заклю-
чать ключи в кавычки или апострофы — в противном случае интерпретатором будет
выведено предупреждение. В то же время, в параметрах name полей формы мы, на-
оборот, должны их избегать — уж так устроен PHP.
Если верить официальной документации, то многомерные массивы (то есть,
массивы массивов) указывать нельзя. Например, при передаче данных поля,
определенного как в
программе, действительно, создастся массив $Silly, но он будет одномер-
ный и с ключом one][two][three — совсем не то, что мы ожидали, не прав-
да ли? В принципе, при большом желании можно написать функцию, которая
конвертирует такие "испорченные" массивы в нормальное многомерное пред-
ставление, но это выходит за рамки нашего обзора.
К счастью, похоже, разработчики PHP поняли, что неработоспособность многомер-
ных массивов при передаче их из формы серьезно снижает популярность PHP. По-
этому они наконец-то включили в PHP поддержку последних. Ура! Например, в моей
версии PHP 4.0.3 (самой свежей на момент написания этих строк) они уже работают.
Часть III. Основы языка PHP 152
Впрочем, в документации по-прежнему заявлено, что "многомерные массивы исполь-
зовать нельзя". Что это — ошибка или злая шутка?..
Как же проверить, можно ли использовать многомерные массивы при обработке
форм в вашей версии PHP? Нет ничего проще! Достаточно зап