Статическая переменная в php не работает должным образом в рекурсивной функции

Я использую статическую переменную в php. В идеале это должно отображать от 1 до 10.

Но это не так. Почему это так?

test(10);
function test($a)
{
    static $count = 0;

    $count++;
    echo $count;
    if ($count < $a) {
        echo 'in if ' . $count;
        test($count);
    }

}

2 ответа

В вашем if неверная переменная. Если вы отладите его, вы увидите, что функция срабатывает только дважды вместо 10.

менять

if ($count < $a) {
    echo 'in if ' . $count;
    test($count);
}

в

if ($count < $a) {
    echo 'in if ' . $count;
    test($a);
}

Используйте это, если вы хотите напечатать от 1 до 10

function test($a)
{
    static $count = 0;

    $count++;
    echo $count."====".$a;
    if ($count < $a) {
        echo 'in if ' . $count;
        test($a);
    }

}
Другие вопросы по тегам