while ($variable)在PHP中是什么意思?


What does while ($variable) mean in PHP?

我是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>";
?>

所有这些条件语句,包括whileif,都是根据true计算给定表达式。如果表达式的结果是true,则执行该操作。如果结果为false,则不会。

$var == true是比较$vartrue的表达式。该表达式的结果是truefalse .这里需要理解的重点是表达式。表达式是那些返回值的东西。试试var_dump($var == true)var_dump(4 > 6)。它向您展示了表达式返回一个布尔值。:

if ($var == true)

首先将$vartrue进行比较,得到truefalse的值,然后由if计算其值是true还是false,然后提示if是否执行以下语句。

换句话说,它是多余的。

if ($var)

这简单地使if计算$vartrue还是false,然后执行下面的语句。== true基本上已经"内置"了。

下列语句本质上都是等价的:

if ($var)
if ($var == true)
if (($var == true) == true)
if ((($var == true)) == true) == true)
...

布尔值truefalse不应该与冗余的$c == true一起使用,因为结果与$c相同:truefalse

$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本身最终只能是truefalse,因此您甚至不需要该语句,因为它的返回值也将是这两个中的一个。

因此$variable$variable == true完全相同。

while/do-while的语义是

   while(<boolean expression>) {
       // do your stuff
   }

布尔表达式计算truefalse的任何值。因此,如果$loopCounttrue,那么$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) {
         }