2009-06-18 7 views
35
<input name="foo[]" ... > 

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

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

ответ

10

Есть некоторые ссылки и указатели в комментариях on this page at PHP.net:

Torsten говорит

«Раздел С.8 руководящих принципов, поддерживающих совместимость в XHTML SPEC применимы к использованию имени атрибута в качестве идентификатора фрагмента , Если вы проверяете DTD вы увидите, что атрибут «имя» по-прежнему определяются как CDATA для элементов формы «

Jetboy говорит

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

Несмотря на это, на момент написания, валидатор стандартизованный W3C не поднять это на XHTML документа.»

22

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

44

Я думаю, что это просто 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 [ 'пища'] массив, и вы можете получить доступ к его элементам, как так:

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

или к увидеть все выбранные значения:

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

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

+3

Я думаю, что он это понимает, он просто хочет знать, есть ли для этого спецификация. –

+0

Как говорит Паоло, я его понимаю! Он также используется на других языках. –

+1

PHP - это единственный язык, с которым я столкнулся, где библиотека обработки по умолчанию требует специального именования конвенций для ситуаций, когда у вас есть более одного успешного управления с помощью sa меня зовут. Другие языки вообще оставляют решимость рассматривать что-то как массив или нет для автора программы. – Quentin

0

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

<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. 
} 
?> 
Смежные вопросы