特定服务器上的递归失败

时间:2012-06-01 17:00:42

标签: php recursion

有通常的递归功能。它迭代两次 - 第一次主迭代和第二次内部迭代:

function recursive() {
    global $a, $stop;

    $stop++;

    foreach($a as $val) {
        echo $val;
        if ( $stop < 2 )
            recursive();
    }
}

$a = array(1,2);
$stop = 0;
recursive();

结果是1122。一切都是对的。第二次迭代在第一次:{​​{1}}

我更改了服务器和新服务器回声1(12)2。第二次迭代后第一次循环停止:112 它总是停止。只有一次迭代是可能的,然后就完成了。

这台服务器有什么问题?是php的选择还是什么?

1 个答案:

答案 0 :(得分:0)

尝试使用静态值而不是全局变量(在您的情况下没用):

function recursive($a) {
    static $stop = 0;

    $stop++;
    foreach($a as $val) {
        echo $val;
        if ( $stop < 2 )
            recursive($a);
    }
}

$a = array(1,2);
recursive($a);

演示:http://codepad.org/rP7HVKXx