checkboxとPHPに渡されてくるフォーム変数について、すこし調べてみました。
以下の様なPHPソースを実行させると、チェックを入れた一番下の値しかフォーム変数に渡されないことがわかります。
ラジオボタンの様な動作になっています。
ここでvalue="1"のcheckboxの前にhiddenを追加してみます。
この場合の動作は、チェックボックスに1個でもチェックがあれば、最後のチェックボックスの値が"foo"として 渡されますが、チェックが無ければhiddenの値である"0"が渡されます。
この方法を使えば、デフォルト値的なことができますが、少々イレギュラーな使い方ではあります。
通常は、isset($_POST["foo"]を調べれば同じことができますが。
チェックボックスの使い方であれば、以下の様にするのが一般的です。
ただし、この方法だとfooの配列としてフォーム変数が渡されますが、配列の添え字が詰まった形で渡されてきます。
twoとfourにチェックをして送信した場合は、フォーム変数が以下の様になります。
($_POSTをprint_r()関数で出力してもの)
$_POST:Array ( [foo] => Array ( [0] => 2 [1] => 4 ) [tx] => 送信 )
もし、添え字も値と合わせたいのであれば、以下の様にします。
この場合、twoとfourにチェックをして送信した場合は、フォーム変数が以下の様になります。
($_POSTをprint_r()関数で出力してもの)
$_POST:Array ( [foo] => Array ( [2] => 2 [4] => 4 ) [tx] => 送信 )