PHP:代码解释协助


PHP: Code Interpretation Assistance

<?php
$headCount = 0;
while ($headCount < 3) {
    $flip = rand(0,1);
    if ($flip){
        $headCount ++;
        echo "<div class='"coin'">H</div>";
    }
    else {
        $headCount = 0;
        echo "<div class='"coin'">T</div>";
    }
}
?>

嗨,伙计们,我理解代码,除了第 5 行中的部分if ($flip){为什么不需要正确定义条件,例如 if($flip==1) ,我们可以编写if($flip)

我的另一个问题如下:

//We will keep flipping a coin as long as the result is heads!
do {
    $flip = rand(0,1);
    if ($flip){
        echo $flip;
        echo "<div class='"coin'">H</div>";
    }
    else {
        echo $flip;
        echo "<div class='"coin'">T</div>";
    }
} while ($flip);

我不明白最后一行"} while ($flip)",有人可以向我解释一下吗?我理解整个语句,以实现代码,直到$flip是真的。但是,为什么它在显示"T"时会阻止代码重复?

感谢您的回答! 当我遇到这个问题时,正在通过 codeacademy.com 学习。

if 语句如下所示:if (expression)

表达式不需要是布尔值,只需可以转换为布尔值即可。

PHP 手册有转换为布尔值的规则。

在本例中,您将生成整数。所以如果它是0那么它是FALSE,否则它是TRUE

每个值都可以隐式转换为布尔truefalse值。 $foo == true$foo 相同 与 $foo == true == true 相同。 $foo == true将任何值$foo强制转换为与true相当的东西,这与直接强制$foo而不需要将其与布尔值进行比较相同。有关详尽的比较规则表,请参阅 http://www.php.net/manual/en/types.comparisons.php。

$flip = rand(0,1);

给你一个1或0,所以这个值会被分配给$flip

现在你有这个.. if($flip)这里,1被认为是真的,0被认为是假的。因此,根据 $flip 的值,将执行 if 语句。

为了说清楚... if(1)是真的if(0)

从 php.net: (http://www.php.net/manual/en/language.types.boolean.php)

转换为布尔值时,以下值被视为 FALSE:

布尔值 FALSE 本身

整数 0(零) 浮点数 0.0(零)

空字符串和字符串"0"

包含零元素的数组

成员变量为零的对象(仅限 PHP 4)

特殊类型 NULL(包括未设置的变量)

从空标记创建的简单 XML 对象

所有其他值都被视为 TRUE(包括任何资源)。