php循环数组的引用问题,zval结构
$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结构解释下吗
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
你的理解是没错的,认真想想:)
第一个foreach之后,
$value
就指向了数组的第四个元素:第二各个foreach,每次都会覆盖
$value
,前3次是这样的:第4次循环到第4个元素,因为在第3次的时候已经被覆盖成
c
了,所以第4次也是c