$arr = array(0,1,2,3)
foreach($arr as $v){
}
var_dump(current($arr)) //最后数组指针停留在数组结尾,取不到值,false
循环过程中,拨动了arraycopy的指针,$arr的指针也在拨动,都拨动了最后,最后数组指针停留在数组结尾,取不到值,false
$arr = array(0,1,2,3)
foreach($arr as $k=>$v){
$arr[$k] = $v;
}
var_dump(current($arr)); //1
赋值就是发生了写 ,就要分裂了 ,有自己的zvalue了 和哈希表
刚开始都是0,值是零,指针也是零,现在还没有分裂,做了一个赋值的操作,指到1,写坏了分裂了,影响的是arraycopy,复制了一份循环
另一个问题
并不是修改
a
r
r
,
而
是
arr ,而是
arr,而是arrcopy ,而是从
a
r
r
c
o
p
y
取
值
赋
给
了
arrcopy取值赋给了
arrcopy取值赋给了v,有这一步的操作的变化
a
r
r
c
o
p
y
这
些
付
给
了
arrcopy这些付给了
arrcopy这些付给了v
0 是 a
KaTeX parse error: Expected 'EOF', got '&' at position 5: v是引用&̲arr[3];
$arr[3]的值被影响了
a b c a
走了四圈,每一圈都是引用赋值
1、数组使用时,慎重引用
2、foreach使用后,不会把数组的内部指针重置,使用数组时,不要假想内部指针正好指向数组头部,也可以在foreach之后,rest一下数组
php7后续会写