Я анализирую чужой PHP-код, и я заметил, что входной HTML имеет много скрытых полей ввода с именами, которые заканчиваются на «[]», например:
<input type="hidden" name="ORDER_VALUE[]" value="34" /> <input type="hidden" name="ORDER_VALUE[]" value="17" />
Страница PHP, обрабатывающая этот вход, получает каждое значение следующим образом:
foreach ($_REQUEST["ORDER_VALUE"] as $order_value) { /... }
Для чего используется «[]»? Укажите, что будет несколько полей ввода с тем же именем?
Да. В основном PHP будет знать, что все эти значения с одним и тем же именем будут привязаны к массиву.
Это относится ко всем полям ввода, кстати, не только к скрытым.
Он передает данные как массив в PHP. Когда у вас есть HTML-формы с тем же именем, они будут добавляться в списки запятой, такие как списки флажков. Здесь PHP имеет обработку для преобразования этого в массив PHP на основе [] следующим образом:
Чтобы получить результат, отправленный в виде массива на ваш PHP-скрипт, вы назовете его или такие элементы:
<input name="MyArray[]" /> <input name="MyArray[]" /> <input name="MyArray[]" /> <input name="MyArray[]" />
Обратите внимание на квадратные скобки после имени переменной, вот что делает его массивом. Вы можете группировать элементы в разные массивы, назначая одно и то же имя различным элементам:
<input name="MyArray[]" /> <input name="MyArray[]" /> <input name="MyOtherArray[]" /> <input name="MyOtherArray[]" />
Это создает два массива, MyArray и MyOtherArray, которые отправляются на PHP-скрипт. Также возможно назначить определенные ключи для ваших массивов:
<input name="AnotherArray[]" /> <input name="AnotherArray[]" /> <input name="AnotherArray[email]" /> <input name="AnotherArray[phone]" />
См. Как создать массивы в HTML <form>
? в FAQ PHP .
Большинство библиотек обработки форм ожидают, что автор укажет, хотят ли они обрабатывать кусок данных в виде строки или массива строк.
Авторы PHP решили быть несовместимыми с остальным миром и требуют, чтобы HTML был сконструирован специально.
Помещение квадратных скобок в конце имени говорит PHP, чтобы рассматривать его как массив данных.