0

通常の再帰関数があります。それは2回繰り返されます-最初のメインの反復と2番目の内部の反復:

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

    $stop++;

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

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

結果は1122です。すべてが正しい。2番目の反復は最初の範囲内です:1(12)2

サーバーを変更し、新しいサーバーがエコーし112ました。最初のループは2回目の反復後に停止します:1(12)
常に止まります。1回の反復のみが可能であり、それが実行されます。

このサーバーの何が問題になっていますか?それは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 に答える