2013-06-20 35 views
-2

我正在嘗試使用while循環來編寫一個Fizz Buzz腳本,以循環顯示每個屏幕的數字1-100echo使用while循環的Fizz Buzz腳本陷入無限循環 - php

我使用的模數運算符查找一個數是否的倍數:

  • 3在這種情況下回聲嘶嘶聲,
  • 5在這種情況下回聲巴茲,
  • 或如果兩個3和5的倍數它回聲FizzBu​​zz

我已經寫了下面的代碼,測試它的所有部件和它似乎工作,但是當我運行該腳本,它陷在一個無限循環,呼應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%3'。你不需要第三和第四個條件 – zerkms

+0

這是否應該被標記[標籤:家庭作業]? – cmbuckley

+2

@cbuckley:http://meta.stackexchange.com/questions/147100/the-homework-tag-is-now-officially-deprecated – zerkms

回答

5
$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

+1

你能**請**給這個答案一些解釋?我知道只有代碼的答案是允許的,但是來吧。這對誰有幫助? – ircmaxell

+1

@ircmaxel:這個答案只包含微不足道的操作符和構造。如果OP無法識別任何特定的一個 - 我很樂意解釋一個。但是我不會解釋'='和'<='是幹什麼的 - 這裏有一些PHP手冊。 – zerkms

+0

打印結果不正確 - 沒有數字。檢查這個wiki http://c2.com/cgi/wiki?FizzBu​​zzTest –