0

我有一个项目,我用 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甚至能够将变量作为索引吗?另外,如果不是,还有其他解决方法吗?

4

2 回答 2

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">
于 2012-11-20T17:27:23.387 回答
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]. 因此,您还必须遍历该值。

希望这可以帮助。

于 2012-11-20T17:28:05.027 回答