PHP被for()语句搞糊涂了

时间:2012-09-28 23:48:40

标签: php for-loop

当我编写代码时,我必须使用循环,例如

$six = 6;
for ($i = $six; $i > 1; $i--) {
   echo $i."<br>";
}

输出

6
5
4
3
2

我需要它输出1我知道我可以做for ($i = 6; $i >= 1; $i--)

for ($i = $six+1; $i > 1; $i--)在评估中,但它太混乱了! 事实上,在使用for语句时,我总是感到困惑。

编辑:令人困惑,因为我不想倒退..我喜欢在条件$six > 1为真时运行循环,而是在$six = 1之类的条件之前满足。

我想的相反方式

loop_before ($six==1) {
   echo $six.<br />;
   $six--;
}

即使这个也不会输出654321 ...猜我只需要回到学校。 得做了

loop_before ($six<1) {
   echo $six.<br />;
   $six--;
}

4 个答案:

答案 0 :(得分:4)

只需将“基本案例”更改为$i > 0

即可

或者,将运算符更改为$i >= 1

答案 1 :(得分:1)

这种混淆可能不仅适用于for()语句,也适用于其他类型的循环。您可以使用$six >= 1$six > 0

示例1

$six = 6;
do {
    echo $six . "<br>";
    $six --;
} while ( $six >= 1 );

示例2

$six = 6;
for($i = $six; $i >= 1; $i --) {
    echo $i . "<br>";
}

示例3

$six = 6;
while ( $six >= 1 ) {
    echo $six . "<br>";
    $six --;
}

最后,您可能决定不使用任何默认的PHP循环

$six = 6;
__loop($six);

function __loop($x) {
    echo $x . "<br>";
    $x --;
    ($x < 1) ? $x : __loop($x);
}

他们都将返回相同的东西

6
5
4
3
2
1

答案 2 :(得分:0)

为了更清楚地解释一下,如果$i > 1

,你就是在循环中执行代码

因此,如果$ i 1,那么它将不会执行代码。 1不大于1.

正如lojik所说,使用$i > 0$i >= 1

答案 3 :(得分:0)

在英语中,for循环语法是这样做的:

At the start of the loop, $i is equal to $six.
Run the loop 'while' $i is greater than 1.
At the end of each running on the looping statement, decrement 1 from $i.

因此,当$ i递减到值1时,条件语句$i > 1不再返回true,因为它检查$ i是否大于1.

像lojik所说,使用$ i&gt; 0或$ i&gt; = 1,因此当$ i等于1时,条件通过并停止,因为在下一个循环中,$ i小于比较值(在您的示例1中)。在for循环之后,如果你检查了$ i的值,你会看到它等于0,这使条件失败。