0

PHP で多次元配列からデータを取得するのに助けが必要です。この配列は、質問とそれらの質問に対する回答で満たされています。各質問には複数の回答を含めることができますが、回答の数はほとんどの質問で異なります。これはその var_dump です。

object(CommandResponse)#3 (3) 
{ 
    ["success"]=> bool(true) 
    ["message"]=> string(6) "Got it" 
    ["value"]=> array(2) 
    { 
       [0]=> array(3) 
       { 
           ["questionId"]=> string(2) "25" 
           ["question"]=> string(9) "Question 1" 
           ["answers"]=> array(2) 
           { 
               [0]=> array(2) 
               { 
                   ["answerId"]=> string(1) "1" 
                   ["answer"]=> string(9) "Answer 1" 
               } 
               [1]=> array(2) 
               { 
                  ["answerId"]=> string(2) "18" 
                  ["answer"]=> string(22) "Answer 2 for question 1" 
               }
         }
    } 
    [1]=> array(3) 
    { 
        ["questionId"]=> string(2) "26" 
        ["question"]=> string(9) "Question 2" 
        ["answers"]=> array(1) 
        { 
            [0]=> array(2) 
            { 
                ["answerId"]=> string(2) "17" 
                ["answer"]=> string(9) "Answer 2" 
            } 
        } 
    } 
}

私はそれからこのようなものを得たいと思います:

Question 1
  Answer 1
  Answer 2
Question 2
  Answer 1
  Answer 2

これまでのところ、私は試しました:

次のように質問をprint $myArray->value[0]['question']; 取得します。次のように最初の回答を取得します。print $myArray->value[0]['anwsers'][0]['answer'];

また、いくつかの foreach ループでループしようとしましたが、何も得られません。

foreach ($myArray->value as $key => $value)
{
    print $value['question'].' - ';
    print $value['answers'][0]['answer'].'<br />';
}
4

1 に答える 1

1

データが variable で提供されていると仮定しましょう$object

// Assign questions array to $questions
$questions = $object->value;

// Loop through questions
echo '<ul>';
foreach ($questions as $q) {
    echo '<li>' . $q['question'];

    // Loop through answers
    echo '<ul>';
    foreach($q['answers'] as $a) {
        echo '<li>' . $a['answer'] . '</li>';
    }
    echo '</ul>';
    echo '</li>';
}
echo '</ul>';

必要な出力をする必要があります

  • 質問1
    • 答え 1
    • 答え 2
  • 質問2
    • 答え 1
    • 答え 2
于 2013-04-13T14:29:18.893 に答える