使用表单清单显然通常会有多个选中的项目具有相同的“名称”和不同的值。
如果我想编写一个php函数来计算具有特定名称的复选框的数量(在这种情况下使用通用名称checkboxname),我该怎么做。
目前我编写的短PHP代码计算是否有一个带有checkboxname作为名称的$ GET或告诉我是否有0.但是它不计算在1.以下为什么?
目前我正在尝试使用numberofcheckboxes.php?checkboxname=firstvalue&checkboxname=secondvalue
作为网址来调用文件
numberofcheckboxes.php:
function checknumber(){
$b;
$numberoftypes= count($_GET["checkboxname"]);
echo $numberoftypes;
if ($numberoftypes > 1) {$b = 'more than one were checked';}
echo $b;}
checknumber();
答案 0 :(得分:2)
您没有在名称中使用[]
:
numberofcheckboxes.php?checkboxname=firstvalue&checkboxname=secondvalue
^-----------------------^
如果名称中没有[]
,则PHP假定每个字段都是SINGLE值,而treats就是这样。这意味着URL中的LAST复选框名称是生效的值。
你需要:
<input type="checkbox" name="checkboxname[]" ... />
^^---
答案 1 :(得分:1)
正如Marc B建议的那样。
<input type="checkbox" name="checkboxname[]" value="1" />
<input type="checkbox" name="checkboxname[]" value="2" />
添加方括号可将GET / POST变量转换为数组。
如果同时选中了两个复选框,您将获得
$_GET['checkboxname'] == array(1, 2);
您也可以使用多维数组
<input type="checkbox" name="checkboxname[group1][]" value="1" />
<input type="checkbox" name="checkboxname[group1][]" value="2" />
<input type="checkbox" name="checkboxname[group2][]" value="3" />
<input type="checkbox" name="checkboxname[group2][]" value="4" />
将是
$_GET['checkboxname'] == array('group1' => array(1, 2), 'group2' => array(3, 4));