打印在$ _POST数组中选中的复选框

时间:2011-10-31 02:10:33

标签: php html post

所以,我的$_POST数组中有几个复选框,我想知道它们是否被选中。然后我想打印出已检查的那些。我怎么会这样做?

3 个答案:

答案 0 :(得分:3)

通常,我们使用复选框的方式是,使用如下的阵列名称:

<input type="checkbox" name="check[]" value="check 1" /> check<br />
<input type="checkbox" name="check[]" value="check 2" /> check<br />
<input type="checkbox" name="check[]" value="check 3" /> check<br />

通过这种方式,我们可以使用以下方式轻松确定是否有人选中了我们的复选框:

if( isset( $_POST['check'] ))
{
    if( count( $_POST['check'] ) > 0 )
    {
        echo "checked value are: " . implode(", ", $_POST['check']);
    }
}

这主要是因为浏览器不发送未检查的复选框值。

答案 1 :(得分:0)

您无论如何都只能打印checked复选框,因为浏览器不会提交空(未选中)复选框:

foreach ($_POST as $key=>$val)
{
    echo $key ." :: ".$val."<br/>";
}

答案 2 :(得分:0)

这在@ iHaveacomputer的答案上略有扩展。

仅选中复选框&amp;无线电被放入$_POST$_GET

但是,您可以拥有一个复选框(或其他类型的输入)数组,因此如果您在输入的名称中使用括号,则应检查该值是否为数组。

foreach ($_POST as $input_name => $value_s)
{
    if (is_array($value_s))
    {
        foreach ($value_s as $index => $value)
        {
            echo "$input_name[$index]::$value<br />"; 
            // note that this literally prints the input_name, brackets, and index)
            // using braces will just print the value
        }
    }
    else
    {
            echo "$input_name::$value_s<br />"; 
    }
}