牛骨文教育服务平台(让学习变的简单)
博文笔记

PHP---引用使用foreach(xxx as &$x)时候的坑。

创建时间:2016-12-15 投稿人: 浏览次数:2013

注意如下一段代码:

$data1 = ["1","2","3"];
$data2 = ["4","5","6"];
$all = 0;
foreach($data1 as &$x){
   $all += $x
}
#注意这里$x是$data1最后一个元素的引用
$all2 = 0;
foreach($data2 as $x=>$y){
    $all2 += ($y+$data1[$x]); //原意是计算:1+4 + 2+5 + 3+6 的总和,结果应该是21
}
echo all2;
结果输出:20

为什么?
因为第一个foreach运行完后,$x是$data1[2]的引用,所以:

由于第二个foreach循环,$data1[2]在不经意间,经历了0->1->2的变化。

因此,平时在使用完“引用foreach”,可以看情况加上:

unset($x);
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。