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 のコメントを参照)
ループ内で配列要素を直接変更できるようにするには、$value の前に & を付けます。その場合、値は参照によって割り当てられます。