-
赋值引用
数组引用赋值给变量并不会将左边转换为引用,例:
1 2 3 4 5 6
| <?php $a = 0; $b = &$a; $c = $b; $c = 90; echo $a . '------' . $b . PHP_EOL;
|
1 2 3 4 5 6 7 8 9 10 11 12
| <?php $arr = [ 'fi' => 1, 'ti' => 45 ];
$b = &$arr['ti']; $c = $arr; $c['fi'] = 67; $c['ti'] = 56;
var_export($arr);
|
-
foreach :每次循环中,当前单元的值被赋给 $value 并且数组内部的指针向前移一步
- 当 foreach 开始执行时,数组内部的指针会自动指向第一个单元。这意味着不需要在 foreach 循环之前调用 reset()。
由于 foreach 依赖内部数组指针,在循环中修改其值将可能导致意外的行为。
数组最后一个元素的 $value 引用在 foreach 循环之后仍会保留。建议使用 unset() 来将其销毁。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <?php
$arr = [1, 2, 3, 4]; foreach ($arr as &$value) { $value = $value * 2; }
unset($value);
$arr2 = [1, 3, 7]; $arr3 = [4, 6, 10, 12]; foreach($arr2 as &$row){} foreach($arr3 as $row){}
var_export($arr2); var_export($arr3);
|