根据 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 并没有具体说明。老实说,我不记得我是否总是在名称末尾使用 [],但出于某种原因,我认为在某些时候我没有。过去是否有任何时候可以在没有 [] 的情况下使其工作?