Несколько флажков с одинаковым именем

Согласно w3c «Несколько флажков в форме могут иметь одно и то же имя элемента управления. Таким образом, например, флажки позволяют пользователям выбирать несколько значений для одного свойства». Однако, если вы сделаете это, PHP примет только последнее значение. Например:

<?php
if ($_POST) {
echo "<pre>";
print_R($_POST);
echo "</pre>";
}
?>
<form action="" method = "post">
<input type="checkbox" name="pet" value="dog" />Dog<br />
<input type="checkbox" name="pet" value="Cat" />Cat<br />
<input type="checkbox" name="pet" value="bird" />bird<br />
<input type="checkbox" name="pet" value="iguana" />iguana<br />
<input type="submit" />
</form>

Если вы отправите эту форму, вы увидите, что будет установлен только отмеченный флажок, который отображается последним. Браузер отправляет их все, но они перезаписывают друг друга. Таким образом, установка одного и того же имени на несколько флажков может вызвать проблемы. Это всегда было так? Кажется, я помню, что можно было на самом деле отправить все значения в виде массива.

Я знаю, что вы можете просто добавить [] в конце имени, чтобы создать массив значений:

<?php
if ($_POST) {
echo "<pre>";
print_R($_POST);
echo "</pre>";
}
?>
<form action="" method = "post">
<input type="checkbox" name="pet[]" value="dog" />Dog<br />
<input type="checkbox" name="pet[]" value="Cat" />Cat<br />
<input type="checkbox" name="pet[]" value="bird" />bird<br />
<input type="checkbox" name="pet[]" value="iguana" />iguana<br />
<input type="submit" />
</form>

Но в w3c это не указано. Честно говоря, я не помню, всегда ли я использовал [] в конце названия, но по какой-то причине я думаю, что в какой-то момент я этого не сделал. Было ли какое-то время в прошлом, когда вы могли заставить его работать без []?

http://www.w3.org/TR/html401/interact/forms.html#checkbox

Ответы на вопрос(2)

Ваш ответ на вопрос