0

PHPと多次元配列の使用方法についての私の理解は限られているため、name="value"にアクセスする方法を理解するのに苦労しています。

<input name='questions[]' type='text' value='question 1' /><br/>
  <input name='choice[1-1][]' type='text' value='option 1' />   
    <input name='value[1-1][1][]' type='text' value='value' /><br/>
  <input name='choice[1-1][]' type='text' value='option 2' />   
    <input name='value[1-1][2][]' type='text' value='value' /><br/>
  <input name='choice[1-1][]' type='text' value='option 3' />   
    <input name='value[1-1][3][]' type='text' value='value' /><br/>

foreachループを使用して、機能するものにアクセスしましたが、値の配列内の1つの要素にアクセスしたいと思います。ですから、別の方法を使う方が良いと思います。

質問[]にアクセスしました:

$q = $_POST['questions'];
echo $q[0];

しかし、私は同様の方法でchoice[]とvalue[]にアクセスしようとしましたが、成功しませんでした。

最初にprint_r()を試して、配列がどのように設定されているかを確認しました。選択には追加の[]が必要で、値には2つの追加が必要でしたが、それらを追加すると、エラーメッセージUndefined offset:0が表示されました。 foundは、配列が設定されていないことを意味します。明らかに誤ってアクセスしています。誰かアドバイスしてください。

また、多次元配列の優れたチュートリアルに関するアドバイスをいただければ幸いです。すでにphp.netをご覧ください。

4

3 に答える 3

0

正確な答えを言う代わりに、あなたが自分で学び、楽しむことができるように、ヒントを教えてあげましょう。

使用する:

    print_r($_POST);

その結果、各要素の呼び出し方法を決定できます。それでも問題が解決しない場合は、以下にコメントしてください。

于 2012-12-10T21:13:49.477 に答える
0

これは、現在の構造よりもphpを介して処理する方が簡単だと思います

<input name='questions[q1]' type='text' value='question 1' /><br/>
<input name='questions[choice][1]' type='text' value='option 1' />   
<input name='questions[value][1]' type='text' value='value' /><br/>
<input name='questions[choice][2]' type='text' value='option 1' />   
<input name='questions[value][2]' type='text' value='value' /><br/>  
<input name='questions[choice][3]' type='text' value='option 1' />   
<input name='questions[value][3]' type='text' value='value' /><br/>

私はあなたの特定の状況に応じてこれにいくつかのバリエーションを見ることができます。

于 2012-12-10T21:14:01.040 に答える
0

基本的に、これは、このフォームが送信されたときに、PHP が配列 (*$_GET/$_POST -- フォーム メソッドに依存します*) に入力する方法です。角括弧内はすべてリテラルです (ダッシュに変換されるアンダースコアなどのいくつかの文字を除く)。空の括弧は、PHP で使用したかのように、PHP が各値をその配列に (0 インデックスから開始して) 自動的に追加することを意味array_pushします。

だからあなたの配列はこれを望んでいます...

$_POST['value']['1-1'][1][0] = 'whatever value the user supplied 1';
$_POST['value']['1-1'][2][0] = 'whatever value the user supplied 2';
$_POST['value']['1-1'][3][0] = 'whatever value the user supplied 3';

PHP でこれらの要素にアクセスするには、同じ表記法を使用します。それらを繰り返し処理したい場合は、それらが 3 次元であることを考慮する必要があります。だから例えば…

foreach ($_POST['value']['1-1'] as $values) {
    foreach ($values as $value) {
        echo "$value\n";
    }
}

これは出力します

whatever value the user supplied 1
whatever value the user supplied 2
whatever value the user supplied 3

また、var_dump($_POST, $_GET); のようなものを使用できることを忘れていました。印刷可能な配列の構造を確認します。変数のデバッグにはvar_dumpを強くお勧めします。なぜなら、print_r/echo/etc... のような他の関数よりも優れた変数に関する多くの有用な情報が得られるからです。

于 2012-12-10T21:18:47.940 に答える