PHP中的foreach
之前在论坛上看到foreach两个比较难以理解的案例,谨此博文已记之。
案例1
$arr = [1,2,3];
foreach($arr as &$val){
$val = $val * 2;
}
foreach($arr as $val){}
最终结果为:[2,4,4]
具体讲解参考:
https://juejin.im/post/5b596b9b6fb9a04fd450a16f
案例2
$arr = array('aa', 'bb', 'cc');
foreach($arr as $k=>$v){
$v = &$arr[$k];
}
这个问题牵涉到foreach内部的一些东西,
分析:第一次遍历:$v = & $arr[0],此时 $arr的值为[‘aa’,‘bb’,‘cc’];
数组内部指针前进一位, $v 指向了 ‘bb’, 此时 $arr的值为[‘bb’,‘bb’,‘cc’];
数组内部指针前进一位, $v 指向了 ‘cc’, 此时 $arr的值为[‘bb’,‘cc’,‘cc’]
至此数组指针为null;