2012-01-11 39 views
4

我有一个包含许多复选框的表单。复选框数组只显示选中的值 - PHP

ex。我想要所有的数组中的所有复选框。阵列'dodatkowe'。

,当我检查所有复选框有:

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

,但是当我检查例如仅次于我的:

Array ([0] => 1) 

我需要的是,当我检查例如第二个复选框:

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

浏览器只提交选中的复选框,所以你永远不会看到未选中的复选框的值。 – Neil 2012-01-11 21:27:21

回答

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 2012-01-11 21:25:35

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 2012-01-11 21:31:16

+0

正确...您可能需要考虑在之前将其复制到另一个变量。 .. – bardiir 2012-01-11 21:32:42