首页 > 其他 > 详细

foreach在引用时的陷阱

时间:2020-03-17 15:56:45      阅读:65      评论:0      收藏:0      [点我收藏+]

这个陷阱在PHP里存在很久了,先看代码:

<?php
$array = array(1, 2, 3);

foreach ($array as &$v) {}
foreach ($array as  $v) {}

print_r($array);
?>

运行代码,得到的结果却是:
Array
(
[0] => 1
[1] => 2
[2] => 2
)可以发现,经过两次foreach后,最后一个元素由3变成了2。

为什么会这样呢?这是因为第一次foreach的时候$v成为了一个引用变量($array[2]),如此,当第二次foreach的时候,实际上只是在对这个引用变量($array[2])进行了若干次赋值而已。

第一次:$array[2] = 1,此时$array各元素分别为1,2,1
第二次:$array[2] = 2,此时$array各元素分别为1,2,2
第二次:$array[2] = 2,此时$array各元素分别为1,2,2

这是第一次发现这种,写foreach之后赋值,然后把上一条数据的值,循环到下面数组的,一度非常费解。然后查找了相关资料,和群里面热心大宝同学的解答。解决了这个问题

foreach在引用时的陷阱

原文:https://www.cnblogs.com/cici1989/p/12510819.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!