0

有通常的递归函数。它迭代两次——第一次主迭代和第二次内部迭代:

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(12)2

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

这台服务器有什么问题?它是任何php的选项还是什么?

4

1 回答 1

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

于 2012-06-01T17:03:31.170 回答