有没有办法避免最后出现空的 else { } ?

问题描述 投票:0回答:3

我正在学习 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 {}
?>
php while-loop do-while
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
,所有其他语句之后[循环内]被跳过并且循环移至下一次迭代。

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


2
投票

只需删除

else{}

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

1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.