来自$ _POST的复选框值不能作为数组吗?

时间:2012-10-12 14:13:06

标签: php html forms post

  

可能重复:
  Get $_POST from multiple checkboxes

我对网络开发有点新意,这是一个问题(完全难以理解我)我觉得有一个简单的解决方案,所以我不会在丛林中试图弄清楚自己。我还将关注最重要的部分。

我有一些PHP代码,每行输出一个表格,一个表格和一个复选框。每个复选框都如下所示:

<input type="checkbox" name="data_id" value="1">
<input type="checkbox" name="data_id" value="2">
<input type="checkbox" name="data_id" value="3">

以及提交按钮:

<input type='submit' name='Submit' value='Submit'/>

标准表单设置,没什么特别的。

我想在数组中获取已检查的项目,但是当我使用$ _POST从表单中检索数据时:

if($_POST['data_id'])
    {
        var_dump($_POST['data_id']); //returns string
        print_r($_POST['data_id']); //shows only one checkbox value
    };

我究竟错误地认为变量没有返回数组?

3 个答案:

答案 0 :(得分:1)

PHP的表单到数组语法在元素名称中需要[]

<input type="checkbox" name="data_id[]" value="1">
                                    ^^

答案 1 :(得分:1)

当PHP将数据解析为$_POST/GET/REQUEST时,如果字段名称以[][some_index]结尾,则它仅将数据显示为数组(否则它将丢弃除一个值之外的所有值)。

重命名字段:

<input type="checkbox" name="data_id[]" value="1">
<input type="checkbox" name="data_id[]" value="2">
<input type="checkbox" name="data_id[]" value="3">

...或者获取the raw post data并自己进行游行。 (我不推荐后一种方法)。

答案 2 :(得分:0)

尝试

<input type="checkbox" name="data_id[]" value="1">
<input type="checkbox" name="data_id[]" value="2">
<input type="checkbox" name="data_id[]" value="3">