复选框数组仅显示已检查的值 - PHP

时间:2012-01-11 21:22:04

标签: php html forms checkbox

我有一个包含许多复选框的表单。

离。

...
<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 个答案:

答案 0 :(得分: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 :(得分: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应包含您要查找的结果。