PHP:代码解释帮助

时间:2013-12-18 10:35:38

标签: php

<?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),我们可以写{{1 }}?

我的另一个问题如下:

if($flip)

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

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

4 个答案:

答案 0 :(得分:3)

if语句如下:if (expression)

表达式不需要是布尔值,只需要转换为一个布尔值。

PHP手册具有converting to booleans的规则。

在这种情况下,您将生成整数。因此,如果它是0,那么它是FALSE,否则它是TRUE

答案 1 :(得分:1)

$flip = rand(0,1);将为您提供 1 0 ,因此该值将分配给$flip。< / p>

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

要说清楚...... if(1) true if(0) false

答案 2 :(得分:1)

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

答案 3 :(得分:0)

来自php.net:(http://www.php.net/manual/en/language.types.boolean.php

  

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

     

布尔值FALSE本身

     

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

     

空字符串,字符串“0”

     

零元素的数组

     

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

     

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

     

从空标签创建的SimpleXML对象

     

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