$ _POST和变量索引

时间:2012-11-20 17:24:53

标签: php html post

我有一个项目,我用jQuery创建隐藏的输入值。这些代表组和成员,因此我有一个用于组本身的数组和包含每个组成员的数组。

例如,在一些创作之后,表单中的代码包含

<input type="hidden" name="groups['group_2']" value="0">
<input type="hidden" name="groups['group_1']" value="0">
<input type="hidden" class="mem_id_holder" name="group_1[]" value="FWNGVISkjW">
<input type="hidden" class="mem_id_holder" name="group_1[]" value="G0t9E3C0yG">
<input type="hidden" class="mem_id_holder" name="group_2[]" value="NT-JEDVCS9">

表示2个组的示例,其中group_1中有2个成员,group_2中有1个成员。

现在,在提交我的代码以迭代值后,我使用此代码:

if ($groups_no && isset($_POST['groups']) && !empty($_POST['groups'])){
    $groups = $_POST['groups'];
    foreach ($groups as $key => $val){
        if (isset($_POST[$key]) && !empty($_POST[$key])){
            $group_members = $_POST[$key];      
            foreach ($group_members as $member_key => $member_val){
                echo 'Actions to be done here!';
            }
        }
    }
}

我遇到的问题是我收到以下警告并且程序失败:

Notice: Undefined index: 'group_1' in C:\ ... .php on line 31
Warning: Invalid argument supplied for foreach() ...
Notice: Undefined index: 'group_2' in C:\ ... .php on line 31
Warning: Invalid argument supplied for foreach() ...

当我使用$_POST['group_1']时,一切正常,但由于我不知道要插入多少组和哪些组,我需要变量。我尝试了一些不同的东西,通过谷歌的一些结果,但没有任何效果。

有什么想法吗? $_POST甚至能够将变量作为索引吗?如果不是,还有其他解决方法吗?

2 个答案:

答案 0 :(得分:2)

在HTML中,不要在数组索引周围添加引号。

<input type="hidden" name="groups[group_2]" value="0">
<input type="hidden" name="groups[group_1]" value="0">
<input type="hidden" class="mem_id_holder" name="group_1[]" value="FWNGVISkjW">
<input type="hidden" class="mem_id_holder" name="group_1[]" value="G0t9E3C0yG">
<input type="hidden" class="mem_id_holder" name="group_2[]" value="NT-JEDVCS9">

答案 1 :(得分:0)

通过这样做:

<input type="hidden" class="mem_id_holder" name="group_1[]" value="FWNGVISkjW">

而不是:

<input type="hidden" class="mem_id_holder" name="group_1" value="FWNGVISkjW">

当您发布值时,您将获得一个数组,因此$_POST['group_1']在第一个实例中不会作为字符串存在,它将是$_POST['group_1'][0]。所以你也必须遍历这个值。

希望这有帮助。