计算具有相同名称的$ GET名称值对的数量

时间:2016-01-13 20:58:43

标签: php get

使用表单清单显然通常会有多个选中的项目具有相同的“名称”和不同的值。

如果我想编写一个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();

2 个答案:

答案 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));