Varias casillas de verificación que comparten el mismo nombre.

De acuerdo con el w3c "Varias casillas de verificación en un formulario pueden compartir el mismo nombre de control. Así, por ejemplo, las casillas de verificación permiten a los usuarios seleccionar varios valores para la misma propiedad". Sin embargo, si lo haces, PHP solo tomará el último valor. Por ejemplo:

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

Si envía ese formulario, verá que solo se establecerá la casilla marcada que aparece por última vez. El navegador los envía a todos, pero se sobreescriben. Por lo tanto, establecer el mismo nombre en varias casillas de verificación puede causar problemas. ¿Siempre ha sido así? Me parece recordar que fue posible enviar todos los valores como una matriz.

Sé que puedes agregar un [] al final del nombre para crear una 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>

Pero el w3c no especifica eso. Sinceramente, no recuerdo si siempre usé [] al final del nombre, pero por algún motivo creo que en algún momento no lo hice. ¿Hubo algún momento en el pasado en el que pudieras hacerlo funcionar sin el []?

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

Respuestas a la pregunta(2)

Su respuesta a la pregunta