且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

PHP - 修改foreach循环当前对象

更新时间:2022-10-15 18:43:33

有这样做的2种方式。

 的foreach($问题为重点$ = GT; $问题){
        $问题[$关键] ['答案'] = $ answers_model-> get_answers_by_question_id($问题['question_id']);
    }

这样,您保存密钥,这样你就可以在主 $问题再次更新变量

 的foreach($问题为&放大器; $问题){

添加&安培; 将保持 $问题更新。但我要说的第一个建议,即使这是短(见Paystey评论)

PHP 的foreach 文件


  

为了能够直接修改环路precede $值内的数组元素与&放大器;.在这种情况下,该值将通过参照被分配


块引用>

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']);
}

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.