Массивы ввода HTML - PullRequest
       23

Массивы ввода HTML

42 голосов
/ 18 июня 2009
<input name="foo[]" ... >

Я использовал их раньше, но мне интересно, как это называется и есть ли для него спецификации?

Я не смог найти его в спецификации HTML 4.01 , и в результате различные результаты Google называют его "массивом" вместе со многими примерами обработки данных в PHP.

Ответы [ 4 ]

55 голосов
/ 18 июня 2009

Это просто PHP, а не HTML.

Он разбирает все поля HTML с [] в массив.

Так что вы можете иметь

<input type="checkbox" name="food[]" value="apple" />
<input type="checkbox" name="food[]" value="pear" />
<input type="checkbox" name="food[]" value="banana" />

и при отправке PHP сделает $ _POST ['food'] массивом, и вы сможете получить доступ к его элементам следующим образом:

echo $_POST['food'][0]; // would output first checkbox selected

или просмотреть все выбранные значения:

foreach( $_POST['food'] as $value ) {
    print $value;
}

Во всяком случае, не думайте, что есть конкретное имя для него

22 голосов
/ 18 июня 2009

Насколько я знаю, в спецификациях HTML нет ничего, потому что браузеры не должны делать что-то другое для этих полей. Они просто отправляют их, как обычно, а PHP выполняет синтаксический анализ в массив, как и другие языки.

13 голосов
/ 22 марта 2013

В комментариях есть несколько ссылок и указателей на этой странице на PHP.net :

Торстен говорит

"Раздел C.8 рекомендаций по совместимости спецификации XHTML применяется к использованию атрибута name в качестве идентификатора фрагмента. Если вы проверите DTD, вы обнаружите, что атрибут 'name' все еще определен как CDATA для элементов формы . "

Джетбой говорит

"в соответствии с этим: http://www.w3.org/TR/xhtml1/#C_8 тип атрибута имени был изменен в XHTML 1.0, что означает, что квадратные скобки в атрибуте имени XHTML недопустимы.

Несмотря на это, на момент написания, валидатор W3C не обнаружил это в документе XHTML. "

0 голосов
/ 30 марта 2017

Следуй за этим ...

<form action="index.php" method="POST">
<input type="number" name="array[]" value="1">
<input type="number" name="array[]" value="2">
<input type="number" name="array[]" value="3"> <!--taking array input by input name array[]-->
<input type="number" name="array[]" value="4">
<input type="submit" name="submit">
</form>
<?php
$a=$_POST['array'];
echo "Input :" .$a[3];  // Displaying Selected array Value
foreach ($a as $v) {
    print_r($v); //print all array element.
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...