我有一个项目,我用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
甚至能够将变量作为索引吗?如果不是,还有其他解决方法吗?
答案 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]
。所以你也必须遍历这个值。
希望这有帮助。