PHP被for()语句弄糊涂了

PHP被for()语句弄糊涂了,php,for-loop,Php,For Loop,当我写代码时,我必须使用循环 $six = 6; for ($i = $six; $i > 1; $i--) { echo $i."<br>"; } 我需要它输出1,我知道我可以为($i=6;$i>=1;$i--)执行。 或 用于($i=$six+1;$i>1;$i--)在评估中,但它太令人困惑了! 事实上,当使用for语句时,我总是感到困惑 编辑:这让人困惑,因为我不喜欢逆向思考。。我不想在条件$six>1为真时运行循环,而是在条件$six=1满足之前运行循环 我想正

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

$six = 6;
for ($i = $six; $i > 1; $i--) {
   echo $i."<br>";
}
我需要它输出1,我知道我可以为($i=6;$i>=1;$i--)执行

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

编辑:这让人困惑,因为我不喜欢逆向思考。。我不想在条件
$six>1
为真时运行循环,而是在条件
$six=1
满足之前运行循环

我想正好相反

loop_before ($six==1) {
   echo $six.<br />;
   $six--;
}
前循环($six==1){ 回声六美元。
; 六美元--; } 即使是这个也不会输出654321。。。我想我只需要回学校。 必须做

loop_before ($six<1) {
   echo $six.<br />;
   $six--;
}
loop\u之前($six只需将“基本情况”更改为
$i>0

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

只需将“基本情况”更改为
$i>0


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

,以便更清楚地解释,如果
$i>1

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


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

更清楚地解释,如果
$i>1

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


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

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

例1

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

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

例1

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

在英语中,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>0或$i>=1,因此当$i等于1时,条件通过并停止,因为在下一个循环中,$i小于比较值(在您的示例1中)。在for循环之后,如果您检查了$i的值,您将看到它等于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>0或$i>=1,因此当$i等于1时,条件通过并停止,因为在下一个循环中,$i小于比较值(在您的示例1中)。在for循环之后,如果您检查$i的值,您将看到它等于0,这不符合条件。

阅读以了解循环是如何工作的。当您做了足够多的时间后,您就会习惯它。也许您可以从解释您为什么感到困惑中获益。当您考虑它时,代码读起来非常清楚。循环从6开始,然后开始unt down。如果$i大于1,继续。在您的情况下,当$i达到1时,它不再满足大于1的要求,正如您所写,因此它不会打印。直截了当地说。我不确定这是一个问题-您似乎知道语法,以及为什么它会失败,但您只是说它让您感到困惑?好吧,也许我应该记住这一点<代码>第一个表达式(expr1)在循环开始时无条件计算(执行)一次。在每次迭代开始时,对expr2进行计算。如果它的计算结果为TRUE,则循环继续,嵌套语句如果它的计算结果为FALSE,则循环的执行结束。在每次迭代结束时,expr3被计算(执行).
Ok
ernie
这让人困惑,因为我不喜欢逆向思考,我喜欢在expr2Read中满足条件之前运行循环,而不是在条件为真时运行循环,以了解循环是如何工作的。一旦你做了足够多的次,你就会习惯它。也许你可以从解释你困惑的原因中获益。代码读作pretty在你考虑它的时候会很清楚。循环从6开始,然后倒计时。如果$i大于1,那么继续。在你的例子中,当$i达到1时,它不再满足大于1的要求,正如你所写的,因此它不会打印。直截了当。我不确定这是一个问题-你似乎知道语法,以及它失败的原因,但你不知道只是说它让你困惑?好吧,也许我应该记得,在循环开始时,第一个表达式(expr1)被无条件地评估(执行)一次。在每次迭代的开始,expr2被计算出来。如果它的结果是真的,循环继续,嵌套语句也会继续如果它的计算结果为FALSE,则循环的执行结束。在每次迭代结束时,expr3被计算(执行).Ok
ernie
它让人困惑,因为我不喜欢向后思考,我喜欢在expr2中条件满足之前运行循环,而不是在条件为真时运行循环,如果我不使用数组或以1(不是0)开头的数组然后使用
$i>0
,如果我必须在循环内使用
$i
,我每次都必须执行
$i+1
,这会让人更加困惑。不,不:)你可以这样做,而不会让人困惑。请记住,数组索引值总是从0开始,而不是从1开始。因此,无论是将基本大小写设置为0而不是1,还是按照建议添加
$i+1
,您都需要在for()循环中多循环一次。这是一个非常常见的初学者错误,称为“逐个关闭”错误。但是不要难过,因为即使是世界上最先进的程序员也会犯这个错误,因为人类从0开始计数而不是从1开始是不自然的有前男友
$six = 6;
__loop($six);

function __loop($x) {
    echo $x . "<br>";
    $x --;
    ($x < 1) ? $x : __loop($x);
}
6
5
4
3
2
1
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.