2015-08-15 53 views
0
<?php 
$animals = array('pig', 'chicken', 'cow', 'snake'); 
$i = 0; 
while ($i < 10) 
{ 
    echo "<li>$animals[$i]</li>"; 
} 
?> 

我只是想看看在列表項.. 的豬,雞,牛,蛇,而是發生什麼它只是循環字豬無限......PHP:while循環是無限的

+5

$ i ++;缺少 –

+1

哇,真的需要4個完全相同的答案嗎? –

+0

正如@AnkurTiwari所指出的那樣,'$ i ++;'缺失,您應該修改循環語句爲'while($ i DDPWNAGE

回答

1

您不添加增量$i。您可以通過在while循環中添加$i++將增量添加到$i

<?php 
$animals = array('pig', 'chicken', 'cow', 'snake'); 
$i = 0; 
while ($i < 10) 
{ 
    if (isset($animals[$i])) 
    { 
     echo "<li>$animals[$i]</li>"; 
    } 
    $i++ 
} 
?> 
+0

你可以做到這一點,而不使用$ i ++? –

+0

以下代碼檢查@Sunny是否發佈了代碼,而沒有。在不改變$ i變量的情況下,不可能打破循環。 –

2

這應該使用$i++循環訪問陣列,將$i變量加1。

<?php 
$animals = array('pig', 'chicken', 'cow', 'snake'); 
$i = 0; 
while ($i < 4) { 
    echo "<li>$animals[$i]</li>"; 
    $i++; 
} 
?> 
+0

不要只是發佈代碼,告訴我們你改變和改進了什麼。 –

+0

如果沒有If語句,你可以這樣做嗎?我的意思是隻使用while。 –

+0

只要你忽略PHP錯誤... –

1

我已經添加了$ i ++;在循環中每次增加$ i的值一次,所以我們能夠顯示數組中的每個元素,也可以在初始時查找數組的長度,以避免出現數組越界問題。

<?php 
$animals = array('pig', 'chicken', 'cow', 'snake'); 
$i = 0; 
$len = count($animals); 
    while ($i < $len) 
    { 
     echo "<li>$animals[$i]</li>"; 
     $i++; 
    } 

?> 

最初計算數組的長度,然後根據長度迭代循環。

+0

不要只是發佈代碼,告訴我們你改變和改進了什麼。 –

1

您還可以使用的foreach做到這一點

$animals = array('pig', 'chicken', 'cow', 'snake'); 
foreach($animals as $animal) 
echo "<li>{$animal}</li>"; 
0
<?php 
    $animals = array('pig', 'chicken', 'cow', 'snake'); 
    $i = 0; 
    $max = sizeof($animals); 
    while ($i < max) { 
    echo "<li>$animals[$i]</li>"; 
    i++; 
    } 
?> 
0

我喜歡while循環,所以這裏是一個多爲混! :)

<?php 
$animals = array('pig', 'chicken', 'cow', 'snake'); 
while ($animal = next($animals)) { 
    echo "<li>$animal[$i]</li>"; 
} 
?> 

這款採用next()得到陣列的每一個值,這個時候它獲取到陣列終止while循環結束返回false。你並不需要控制使用$i得到數組的元素,如果你的元素存在

0

你不需要額外if報表內循環檢查你有沒有遞增$i值,因此它總是$i = 0;所以總是在10以下。

增加$i++增加它以避免這種情況,但是由於這個代碼會得到另一個新問題,因爲數組只有3個元素,並且在while循環中使用了10。

<?php 
    $animals = array('pig', 'chicken', 'cow', 'snake'); 
    $i = 0; 
    while ($i < 10) 
    { 
     echo "<li>$animals[$i]</li>"; 
     $i++; 
    } 
?>