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 はそれを指定していません。正直なところ、名前の最後に常に [] を使用していたかどうかは覚えていませんが、何らかの理由で、ある時点で使用しなかったと思います。[] なしで機能させることができたことが過去にありましたか?