Várias caixas de seleção compartilhando o mesmo nome

De acordo com o w3c "Várias caixas de seleção em um formulário podem compartilhar o mesmo nome de controle. Assim, por exemplo, caixas de seleção permitem que os usuários selecionem vários valores para a mesma propriedade." No entanto, se você fizer isso, o PHP só terá o último valor. Por exemplo:

<?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>

Se você enviar esse formulário, verá que apenas a caixa marcada que aparece por último será definida. O navegador envia todos eles, mas eles sobrescrevem uns aos outros. Portanto, definir o mesmo nome para várias caixas de seleção pode causar problemas. Sempre foi assim? Parece que lembro que era possível enviar todos os valores como uma matriz.

Eu sei que você pode simplesmente adicionar um [] no final do nome para criar uma matriz de valores:

<?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>

Mas o w3c não especifica isso. Honestamente, não me lembro se sempre usei o [] no final do nome, mas, por algum motivo, acho que em algum momento não o fiz. Houve algum tempo no passado em que você pudesse fazê-lo funcionar sem o []?

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

questionAnswers(2)

yourAnswerToTheQuestion