Code
$arr1 = [ 1, 2, 3, 4, 5 ];
$arr2 = [ 'a', 'b', 'c', 'd', 'e' ];
$arr3 = [];
foreach ($arr1 as & $v){
$v += 10;
}
foreach ($arr2 as $k => $v){
//举例
$v = $v . $arr1[ $k ];
$arr3[ $k ] = $v;
}
echo implode(', ', $arr1) . "\n" . implode(', ', $arr2) . "\n" . implode(', ', $arr3);
Run
11, 12, 13, 14, ee
a, b, c, d, e
a11, b12, c13, d14, ee
Result
出现问题的原因是第一次循环的结束后,对应的$v
没有进行释放
Solve
在进行循环之前,通过unset()
,对变量进行释放,就不会出现这个问题了
在两次循环之间,添加 unset($v);
11, 12, 13, 14, 15
a, b, c, d, e
a11, b12, c13, d14, e15