2015-08-15 114 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++; 
    } 
?>