1. ホーム
  2. php

[解決済み] foreachループで配列の値を変更する

2022-08-03 07:37:36

質問

の中で処理されている現在のオブジェクトを編集することは可能なのでしょうか? foreach ループ

オブジェクトの配列を操作しています $questions で作業していて、DBでその質問オブジェクトに関連する答えを探したいと思っています。ですから、それぞれの質問に対して、回答オブジェクトを取得し、現在の $question 内部 私の foreach ループの中で、他の場所に出力/処理できるようにします。

foreach($questions as $question){
    $question['answers'] = $answers_model->get_answers_by_question_id($question['question_id']);
}

どのように解決するのですか?

2つの方法があります。

foreach($questions as $key => $question){
    $questions[$key]['answers'] = $answers_model->get_answers_by_question_id($question['question_id']);
}

この方法でキーを保存しておくと、再びメインの $questions 変数で更新できます。

または

foreach($questions as &$question){

を追加することで & を追加すると $questions は更新されます。しかし、私は、こちらの方が短くても、最初のものが推奨されると言います(Paysteyのコメント参照)。

Per はPHPの foreach ドキュメント :

ループ内で配列の要素を直接変更できるようにするために、$valueの前に&を付けます。この場合、値は参照によって代入されます。