Modify array values in foreach loop
arrays, foreach, object, php
Solution
There are 2 ways of doing this
foreach($questions as $key => $question){
$questions[$key]['answers'] = $answers_model->get_answers_by_question_id($question['question_id']);
}
This way you save the key, so you can update it again in the main `$questions` variable
or
foreach($questions as &$question){
Adding the `&` will keep the `$questions` updated. But I would say the first one is recommended even though this is shorter (see comment by Paystey)
Per the PHP `foreach` documentation:
In order to be able to directly modify array elements within the loop precede $value with &. In that case the value will be assigned by reference.
Problem
I was wondering if it is possible to edit the current object that's being handled within a `foreach` loop I'm working with an array of objects `$questions` and I want to go through and look for the answers associated with that question object in my db. So for each question go fetch the answer objects and update the current `$question` inside my `foreach` loop so I can output/process elsewhere. ``` foreach($questions as $question){ $question['answers'] = $answers_model->get_answers_by_question_id($question['question_id']); } ```