我是PHP新手,目前正在从教程中构建do/while循环。如果整个条件是($variable == true)
或($variable == false)
,我会理解,但在教程中,while
条件只是while($variable)
。有人能给我解释一下吗?
这是教程代码。
<?php
$loopCond = false;
do {
echo "<p>The loop ran even though the loop condition is false.</p>";
} while ($loopCond);
echo "<p>Now the loop is done running.</p>";
?>
所有这些条件语句,包括while
和if
,都是根据true
计算给定表达式。如果表达式的结果是true
,则执行该操作。如果结果为false
,则不会。
$var == true
是比较$var
和true
的表达式。该表达式的结果是true
或false
.这里需要理解的重点是表达式。表达式是那些返回值的东西。试试var_dump($var == true)
或var_dump(4 > 6)
。它向您展示了表达式返回一个布尔值。:
if ($var == true)
首先将$var
与true
进行比较,得到true
或false
的值,然后由if
计算其值是true
还是false
,然后提示if
是否执行以下语句。
换句话说,它是多余的。
if ($var)
这简单地使if
计算$var
是true
还是false
,然后执行下面的语句。== true
基本上已经"内置"了。
下列语句本质上都是等价的:
if ($var)
if ($var == true)
if (($var == true) == true)
if ((($var == true)) == true) == true)
...
布尔值true
或false
不应该与冗余的$c == true
一起使用,因为结果与$c
相同:true
或false
$driving = true;
while ($driving) {
while ($driving == true) { // ugly
while (! $driving) { // while not driving.
while ($driving == false) { // ugly
$drinking = ! $driving;
if ($driving && $drinking) {
因此布尔变量也可以用形容词
如果其中的值或语句被认为为真,则满足一个条件。
代码$variable == true
是一个语句,它检查变量的值是否为真,如果为真,则返回true
-否则返回false
。
然而,由于这意味着$variable
本身最终只能是true
或false
,因此您甚至不需要该语句,因为它的返回值也将是这两个中的一个。
因此$variable
与$variable == true
完全相同。
while/do-while的语义是
while(<boolean expression>) {
// do your stuff
}
布尔表达式是计算为true
或false
的任何值。因此,如果$loopCount
是true
,那么$loopCount == true
在每个循环中都被检查并计算为true
。但是您也可以将$ LoopCount
写入条件,因为它的计算结果也为true。
这对于使用其他数据类型非常方便,例如整数。
$count = 0;
while ($count < 10) {
$count = $count +1;
}
这里$count < 10
是一个布尔表达式,只要$count
不大于9,计算结果为true
。
只要满足条件,即只要提供给true
的布尔表达式求值,while循环就会运行。
你也可以只使用一个变量,例如$loopCount
,当该变量计算为布尔值或常量(甚至是常量值true
)。
就像Padarom说的:因此$variable和$variable == true是完全一样的。
在你的例子中: while-do循环决定是否在第一次运行后重做循环体。意味着不管$variable的值是什么,循环体只执行一次。第一次运行后,while($variable)
检查表达式是否为true
。如果是,循环体执行第二次,依此类推。
在这里查看do-while循环的PHP参考。PHP.net do-while reference
while ($loopCond)
和while ($loopCond == true)
是一样的。它会检查括号内输入内容的"真实性"。
如果我问"太阳在西边落下吗? "你的答案是什么,肯定是或是。和编译器总是寻找语句值一样。看一下
$condition = true;
if($condition == true )
// above will return TRUE; in short $condition == true will replaced by true at runtime. But if we place true directly which is $condition value or can say we place $condition instead true thus statement become shorten and look like...
if($condition) {
}