为什么是无限递归


Why is this infinite recursion?

只需询问标题即可,代码如下:

<?php
$foo = 0;
function letsLoop() {
    while ($foo != -1) {
        changeFoo();
        echo "Hello, world!'n";
    }
}
function changeFoo() {
    extract($GLOBALS);
    $foo = -1;
}
letsLoop();

将全局提取到局部作用域并不意味着要修改全局变量$foo。要引用函数内的全局变量,必须使用global关键字:

function changeFoo() {
    global $foo;
    $foo = -1;
}