2012-01-11 7 views
4

多くのチェックボックスがあるフォームがあります。チェックボックスチェックされた値のみを表示する配列 - PHP

ex。

... 
<input name="dodatkowe[]" type="checkbox" value="1" /> 
<input name="dodatkowe[]" type="checkbox" value="1" /> 
<input name="dodatkowe[]" type="checkbox" value="1" /> 
... 

すべてのチェックボックスをアレイに入れたいと思っています。配列 'dodatkowe'。

私はすべてのチェックボックスをチェックしています

Array ([0] => 1 [1] => 1 [2] => 1) 

が、私は例を確認したときにのみ、第二私が持っている:私は私が例をもう一度チェックボックスをチェックすると、その

Array ([0] => 1) 

必要があります。

Array ([0] => 0 [1] => 1 [2] => 0) 
+2

ブラウザはチェックボックスのみを送信するので、チェックボックスをオフにしてもチェックボックスは表示されません。 – Neil

答えて

3

インデックスを指定すると、具体的に参照できるようになります。

... 
<input name="dodatkowe[1]" type="checkbox" value="1" /> 
<input name="dodatkowe[2]" type="checkbox" value="1" /> 
<input name="dodatkowe[3]" type="checkbox" value="1" /> 
... 

チェックされていない値が必要な理由がわからない場合は、チェックされた値の逆数と見なすことができます。これを行う試みはハックであり、不要です。

+1

おそらく、それぞれの前に: ' '(' dodatkowe 'の後に番号を変えてください。) – Wrikken

2

チェックボックスがチェックされていない場合、それはそれはパラメータに値だが、最初のステップは、チェックボックスに一意のIDを与えることだろうが含まれません。

<input name="dodatkowe[0]" type="checkbox" value="1" /> 
<input name="dodatkowe[1]" type="checkbox" value="1" /> 
<input name="dodatkowe[2]" type="checkbox" value="1" /> 

次にあなたがチェックするためにPHPを使用することができますにされます値がある:

$maxfields = 3; 
$selectboxes = $_REQUEST['dodatkowe']; 
for($i = 0; $i < $maxfields; $i++) 
    if(!isset($selectboxes[$i])) $selectboxes[$i] = 0; 

これは、あなたが探している結果が含まれている必要があり、0〜$selectboxesにすべての非存在しないフィールドを設定します。

+2

あなたが提出した値で何を処理する必要があるかによって、$ _REQUEST ...を直接変更することは混乱するかもしれません。 – jondavidjohn

+0

真...それを前に他の変数にコピーすることを考えてみてください。 .. – bardiir

関連する問題