我目前正在尝试学习PHP,并且在使用else / if循环时遇到了do / while,我完全感到困惑。如果有人能让我知道我在哪里出错,我将不胜感激。
<?php
$rollCount = 0;
$sixCount = false;
do {
echo "<p>So you want to roll a 6 ? </p>";
} while($sixCount == false);
$roll = rand(1,6);
$rollCount ++;
if($roll != 6) {
$sixCount = false;
echo "<p>You just rolled a " .$roll. " .</p>";
}
else {
$sixCount = true;
echo "<p>Nice, you just rolled a 6</p>";
}
echo "<p>It took {$rollCount} rolls to land 6... What are the odds!</p>";
?>
我想我可能写了一个无限循环,因为我正在处理的预览屏幕只显示加载动画。
我的小脑袋试图像这样看待它。
$ sixCount等于false时,$滚动1到6之间的随机数,并为滚动计数添加+1。
如果$ roll不= = 6,那么$ sixCount是假的并打印&#34;你刚刚滚动了$ roll&#34;或者$ sixCount是真的,你只是滚了6。
我试着通过放入一个句子并将其转换为PHP来简化它。这是看错PHP的错误方法吗?
感谢所有帮助。谢谢!
答案 0 :(得分:2)
我认为你误解了do ... while循环的概念。您需要将所有条件和输出放入do
部分,而while
部分只是定义应允许do
集保持循环的条件。
尝试将while
行下的代码转换为do
语句:
$rollCount = 0;
$sixCount = false;
echo "<p>So you want to roll a 6 ? </p>";
do {
$roll = rand(1,6);
$rollCount++;
if($roll != 6) {
$sixCount = false; // this line is unnecessary
echo "<p>You just rolled a {$roll}.</p>";
}
else {
$sixCount = true;
echo "<p>Nice, you just rolled a 6</p>";
}
} while($sixCount == false);
echo "<p>It took {$rollCount} rolls to land 6... What are the odds!</p>";
另一种方法是,使用while
构造而不使用do
可能更适用于您列出代码的方式:
$rollCount = 0;
$sixCount = false;
echo "<p>So you want to roll a 6 ? </p>";
while ($sixCount == false) {
$roll = rand(1,6);
$rollCount++;
if($roll != 6) {
$sixCount = false; // this line is unnecessary
echo "<p>You just rolled a {$roll}.</p>";
}
else {
$sixCount = true;
echo "<p>Nice, you just rolled a 6</p>";
}
}
echo "<p>It took {$rollCount} rolls to land 6... What are the odds!</p>";
答案 1 :(得分:1)
看起来你正在编写你想要连续执行的代码,直到它滚动到6在while循环之外,这就是代码看起来的样子。
<?php
$rollCount = 0;
$sixCount = false;
echo "<p>So you want to roll a 6 ? </p>";
do{
$roll = rand(1,6);
$rollCount ++;
if($roll != 6) {
$sixCount = false;
echo "<p>You just rolled a " .$roll. " .</p>";
}
else {
$sixCount = true;
}
}while($sixCount == false);
echo "<p>Nice, you just rolled a 6</p>";
echo "<p>It took {$rollCount} rolls to land 6... What are the odds!</p>";
?>