PHP会更改循环范围并在包含的文件中进行切换

问题描述 投票:1回答:1

如果在for循环中有一个包含的文件,而在该包含的文件中有另一个for循环,则继续2不起作用

这是设计使然?还是这是一个错误? AM完全不知所措

下面的信息

文件temp_outer_loop.php的内容

<pre>
    <?php

    for ($z=0; $z < 20 ; $z++) { 
        echo "\r\nlooping z $z of 20";

        for ($a=0; $a < 20 ; $a++) { 
            echo "\r\n\tlooping a $a of 20";
            if ($a==10) continue 2;
        }

    }

    echo "<hr>";


    for ($x=0; $x < 20 ; $x++) { 
        echo "\r\nlooping x $x of 20";

        include_once(__DIR__ . "/temp_inner_loop.php");
    }




?>

文件temp_inner_loop.php的内容

<?php

    for ($y=0; $y < 20 ; $y++) { 
        echo "\r\n\tlooping y $y of 20";

        if ($y==5) continue 2; 

    }

?>
php for-loop scope continue
1个回答
1
投票

我不认为这是一个错误。请参阅错误跟踪器上的this post back in 2006。它指出:

PHP中的

“ include”在C中不是“ #include”。它不只是复制并粘贴您的代码。包含的文件具有单独的执行上下文,即使它确实继承了某些东西,最显着的是包含范围中的符号表。您还将注意到,在包含的文件中写入“ return”是从文件而不是从文件可能包含的函数中返回。

这种交叉文件goto绝对不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.