学习PHP并且有/同时出问题

时间:2014-11-26 23:40:13

标签: php

我目前正在尝试学习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的错误方法吗?

感谢所有帮助。谢谢!

2 个答案:

答案 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>";
?>