<?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
。
每个值都可以隐式转换为布尔true
或false
值。 $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(包括任何资源)。