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被计算(执行).
Okernie
这让人困惑,因为我不喜欢逆向思考,我喜欢在expr2Read中满足条件之前运行循环,而不是在条件为真时运行循环,以了解循环是如何工作的。一旦你做了足够多的次,你就会习惯它。也许你可以从解释你困惑的原因中获益。代码读作pretty在你考虑它的时候会很清楚。循环从6开始,然后倒计时。如果$i大于1,那么继续。在你的例子中,当$i达到1时,它不再满足大于1的要求,正如你所写的,因此它不会打印。直截了当。我不确定这是一个问题-你似乎知道语法,以及它失败的原因,但你不知道只是说它让你困惑?好吧,也许我应该记得,在循环开始时,第一个表达式(expr1)被无条件地评估(执行)一次。在每次迭代的开始,expr2被计算出来。如果它的结果是真的,循环继续,嵌套语句也会继续如果它的计算结果为FALSE,则循环的执行结束。在每次迭代结束时,expr3被计算(执行).Okernie
它让人困惑,因为我不喜欢向后思考,我喜欢在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.