foreachループで配列の値を変更する [重複] 質問する

foreachループで配列の値を変更する [重複] 質問する

foreachループ内で処理されている現在のオブジェクトを編集できるかどうか疑問に思っていました

私はオブジェクトの配列を扱っていて$questions、データベース内のその質問オブジェクトに関連付けられた回答を検索したいと思っています。質問ごとに回答オブジェクトを取得し、現在の回答を更新します。$question 内部ループforeachを他の場所で出力/処理できるようにします。

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

ベストアンサー1

これには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 のコメントを参照)

パーPHPforeachドキュメント:

ループ内で配列要素を直接変更できるようにするには、$value の前に & を付けます。その場合、値は参照によって割り当てられます。

おすすめ記事