0

jQueryを使用して非表示の入力値を作成するプロジェクトがあります。これらはグループとメンバーを表すため、グループ自体に1つの配列があり、各グループのメンバーに配列があります。

たとえば、数回作成した後、フォームのコードには次のものが含まれます。

<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">

group_1に2つのメンバーがあり、group_2に1つのメンバーがある2つのグループの例。

ここで、コードを送信して値を反復処理した後、次のコードを使用します。

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 に答える