为了账号安全,请及时绑定邮箱和手机立即绑定

php循环数组的引用问题,zval结构

php循环数组的引用问题,zval结构

PHP
qq_遁去的一_1 2019-03-15 10:14:19
$arr=array("a","b","c","d"); foreach ($arr as &$value) { } //$value=&arr[3];$value="d"; foreach ($arr as $key=>$value) { echo "<pre>"; var_dump($arr); } 结果如下 array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> &string(1) "a" } array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> &string(1) "b" } array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> &string(1) "c" } array(4) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> &string(1) "c" } 我想问下,第二个foreache函数前,已经确定了$value=&arr[3];那么下面的在第一次循环时$value=$arr[0];是否完全覆盖了第一个$value时,还有为什么,最后的值是abcc,能否从zval结构解释下吗
查看完整描述

1 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

你的理解是没错的,认真想想:)

第一个foreach之后,$value就指向了数组的第四个元素:

[a b c d]
       ^
       value

第二各个foreach,每次都会覆盖$value,前3次是这样的:

[a b c a]
 ^     ^
       value

[a b c b]
   ^   ^
       value

[a b c c]
     ^ ^
       value

第4次循环到第4个元素,因为在第3次的时候已经被覆盖成c了,所以第4次也是c

查看完整回答
反对 回复 2019-03-18
  • 1 回答
  • 0 关注
  • 301 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信