Скрипт Fizz Buzz, использующий цикл while, застрявший в бесконечном цикле - php

Я пытаюсь написать скрипт Fizz Buzz, используя while цикл для циклического перебора чисел 1-100 а также echo каждый на экран.

Я использую оператор модуля, чтобы найти, является ли число кратным:

  • 3 в этом случае это повторяет Fizz,
  • 5 в этом случае это эхо Buzz,
  • или, если его кратно 3 и 5, это повторяет FizzBuzz

Я написал код ниже, проверил все его части, и он, кажется, работает, но когда я запускаю скрипт, он застревает в бесконечном цикле, повторяя Fizz,

$i = 1;

while ($i <= 100) {

    if ((3 % $i) === 0) {
        echo 'Fizz';
        $i = $i++;
    } else if ((5 % $i) === 0) {    
        $i = $i++;
        echo 'Buzz';        
    } else if ( ((3 % $i) === 0) && ((5 % $i) === 0)){
        echo 'FizzBuzz';
    } else {
        echo $i++;
    }

}

Есть идеи, что я ошибся?

1 ответ

Решение
$i = 1;

while ($i <= 100) {

    $r = '';

    if ($i % 3 === 0) {
        $r .= 'Fizz';
    }

    if ($i % 5 === 0) {    
        $r .= 'Buzz';        
    }

    if (!$r) {
        $r = $i;
    }

    echo "$r\n";
    ++$i;
}

Демо онлайн: http://ideone.com/WbXZEd

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