В соответствии с 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 не указывает это. Честно говоря, я не помню, всегда ли я использовал [] в конце имени, но почему-то я думаю, что в какой-то момент я этого не сделал. Был ли когда-нибудь в прошлом, когда вы могли заставить его работать без []?