一个不能正确回显的小骰子游戏

A little dice game that does not echo properly

这是一个骰子游戏,当用户选择一个数字并点击提交时,页面随机显示一个骰子上的数字,如果用户猜对了它应该说是你猜对了,否则会说对不起您错了。但是当数字匹配时它不会回显 "you guessed right!" 。问题出在哪里?它说对不起无论如何都是错的。非常感谢!

<html>
<body>
<h1>Dice Game!</h1>

<h1>"Please guess a number on the dice!"</h1>


<?php
if ($_POST['subBtn']) {
    $num = $_POST['number'];

    if ($num == "$roll") {
        $comment = "you guessed right!";
    } else if ($num != "$roll") {
        $comment = "sorry it's wrong!";
    } 
}
?>

<p>     
<form name="number" action="activity-dice-game.php" method="post">
<select name="number">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
</select>
<input type="submit"name="subBtn" value="submit"/></input>
</form>
</p>

<?php
$roll = rand(1,6); 
echo "<p>You rolled a " . $roll . ". </p>";
echo "<img src=\"images/die" . $roll . ".gif\" alt=\"die image\">";
?>

</b> <? echo $comment; ?><br />

</body>
</html>

问题是,当您加载表单时,当您检查用户提交的 $num 是否等于它时,$roll 设置为空!这意味着无论

if($num == $roll)

相当于:

if($num == null)

这永远不会是真的!

只需将 $roll = rand(1,6) 放在脚本的顶部。

这应该有效:

<html>
<body>
<h1>Dice Game!</h1>

<h1>"Please guess a number on the dice!"</h1>


<?php
if ($_POST['subBtn']) {
    $num = $_POST['number'];
    $roll = rand(1,6); 

    if ($num == "$roll") {
        $comment = "you guessed right!";
    } else if ($num != "$roll") {
        $comment = "sorry it's wrong!";
    } 
}
?>

<p>     
<form name="number" action="activity-dice-game.php" method="post">
<select name="number">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
</select>
<input type="submit"name="subBtn" value="submit"/></input>
</form>
</p>

<?php
echo "<p>You rolled a " . $roll . ". </p>";
echo "<img src=\"images/die" . $roll . ".gif\" alt=\"die image\">";
?>

</b> <? echo $comment; ?><br />

</body>
</html>