2014-05-22 99 views
-3

我有這個簡單的代碼來打印* s的模式。奇怪的PHP行爲

<?php 
for($outer = 1; $outer <= 5; $outer++){ 
    for($inner = 1; $inner<=$outer; $inner){ 
     echo '*'; 
    } 
    echo '<br/>'; 
} 
?> 

當我運行這個時,瀏覽器不斷加載並且什麼也不做。 WTH是這個嗎?

+3

也不奇怪可言,它做的正是你告訴它該怎麼做:'$內++'不'$ inner'在你的'for'循環 –

+0

你會很容易發現它的第三個參數就你調試代碼。請記住,調試器是你的朋友:) – mingos

回答

2

您永遠不會增加$inner。使用此得到預期的結果:

<?php 
for($outer = 1; $outer <= 5; $outer++){ 
    for($inner = 1; $inner<=$outer; $inner++){ 
             // ^^ This bit changed. 
     echo '*'; 
    } 
    echo '<br/>'; 
} 
?> 

因此,瀏覽器將繼續加載,直到阿帕奇(或任何服務器您正在使用)達到時間限制時,它會殺死該腳本。

2

你不就行了3

for($inner = 1; $inner<=$outer; $inner)

遞增$inner應該

for($inner = 1; $inner<=$outer; $inner++)

在它的無限它循環的當前狀態。

1

你並沒有增加$inner,並陷入看起來像循環。

<?php 
for($outer = 1; $outer <= 5; $outer++){ 
    for($inner = 1; $inner<=$outer; $inner++){ 
     echo '*'; 
    } 
    echo '<br/>'; 
} 
?>