加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP Bug还是我对语言的误解?

发布时间:2020-12-13 18:18:40 所属栏目:PHP教程 来源:网络整理
导读:参见英文答案 Strange behavior Of foreach2个 foreach loop and reference of $value6个 这是我不理解的代码(作为输出). ?php$x = ['test1','test2','test3','test4'];echo "First FOREACHn";foreach ($x as $y){ echo $y."n";}echo "nnSecond FOREACH
参见英文答案 > Strange behavior Of foreach2个
> foreach loop and reference of &$value6个
这是我不理解的代码(作为输出).
<?php
$x = ['test1','test2','test3','test4'];
echo "First FOREACHn";
foreach ($x as &$y)
{
    echo $y."n";
}
echo "nnSecond FOREACHn";
foreach ($x as $y)
{
    echo $y."n";
}

?>

输出:

First FOREACH
test1
test2
test3
test4

Second FOREACH
test1
test2
test3
test3

PS:我正在运行它:

php -v
PHP 5.6.11-1ubuntu3.1 (cli) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0,Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.6-dev,Copyright (c) 1999-2015,by Zend Technologies
在第一个foreach语句之后,你有$y指向最后一个数组项:
$x = ['test1','test4'];
$y =& $x[3];

每当您为$y分配一个值时,原始数组都将被修改.

当第二个foreach开始时,在每次迭代时,来自$x的下一个值被放入$y.因此,原始数组将如下所示:

// first iteration
$x = ['test1','test1'];
// second iteration
$x = ['test1','test2'];
// third iteration
$x = ['test1','test3'];
// fourth iteration
$x = ['test1','test3'];

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读