When writing code, it is found that a PHP foreach reference assignment can cause unexpected behavior.
code example:
<? PHP = Array ('a','b','C'); foreach as $k =>&$v) { } Print_r ($arr); foreach as $k =$v) { } Print_r ($arr);
Output Result: Array ([0] = a [1] = b [2] = + c) Array ([0] = a [1] = b [2] + b) After finding the information, find out the reason. in fact, after the first foreach ends, the array $arr the last element $v the reference remains. When a second foreach loop is made, it is actually three times the third element of the array $arr the second foreach begins execution, each time the array $arr changes as follows:first time: Array ([0] = a [1] = b [2] = = a) second time: Array ([0] = a [1] = b [2] = = b) third time: Array ([0] = a [1] = b [2] = = b) so there will be the final output. to avoid this, you can cancel the reference after the first foreach is finished: unset ($v). However, to avoid unexpected results, use a foreach reference to assign values sparingly.
PHP foreach Reference Assignment