2

我正在学习 PHP 并尝试编写一个小骰子循环。我想知道如何用更合适的语法重写它:

<?php
    $rollcount = 1;

    do {
        $v = rand(1, 6);
        $w = rand(1, 6);
        $rollcount++;
        echo "<p>$v, $w</p>";
    }
    while ($v != $w);

    if ($v == $w) {
        echo "<p>It took $rollcount turns until double!</p>";
    } else {}
?>
4

3 回答 3

3
$rollcount = 0;
while(true){
    ++$rollcount;
    $v = rand(1,6);
    $w = rand(1,6);
    echo "<p>".$v.", ".$w."</p>";
    if($v === $w){
        break;
    }
}
echo "<p>It took ".$rollcount." turns until double!</p>";

解释

由于目标是实现双倍,骰子可以继续滚动,直到达到条件。
while继续处理直到条件为假,在这种情况下,条件永远不会为假,因为我们将boolean true值提供给while(true)循环。
PHP(和许多其他语言)提供的一些执行控制结构break, continue是最常见的。
break允许您跳出循环,并且可以在循环内达到某个条件时执行它
continue另一方面不会让您跳出循环,而是跳到循环的下一次迭代,所以这意味着一旦continue在循环中遇到,[循环内]之后的所有其他语句都会被跳过,循环移动到下一次迭代。

在这种情况下,一旦我们有了双倍,我们就退出循环并打印出达到双倍所需的滚动数。

希望这可以帮助

于 2013-04-18T09:54:57.870 回答
2

只需删除else{}

if ($v == $w) {
   echo "<p>It took $rollcount turns until double!</p>";
}
于 2013-04-18T09:51:26.110 回答
1

只需删除其他。就是这么简单。

于 2013-04-18T09:56:10.483 回答