您好,我正在清除我的基本知识,我有点坚持实现这个猜猜游戏。我的问题是,我希望$ num_tries作为计数器工作,每当用户回答不正确时,它每次都会增加1。
<?php
$target=58;
$message="";
$num_tries=0;
if(isset($_POST["num_tries"])) {
print "set";
++$num_tries;
} else {
print "not set";
$num_tries=0;
}
if (!isset($_POST["guess"])) {
$message="Welcome to the game of Guess!!!!!!";
} elseif($_POST["guess"]> $target) {
$message= "Try a smaller Number";
} elseif($_POST["guess"] < $target) {
$message= "Try a larger Number";
} else {
$message= "congrats....You got it.";
}
?>
<HTML>
<HEAD><TITLE>Guess Game</TITLE>
</HEAD>
<BODY>
<H1><?php print $message ?></H1>
Guess Number:<?php print $num_tries ?>
<FORM action="<?php print $_SERVER['PHP_SELF'];?>" method="POST">
<INPUT type="text" name="guess">
<INPUT type="hidden" name="num_tries" value="<?php $num_tries?>">
</FORM>
</BODY>
</HTML>
答案 0 :(得分:2)
您可以在第一行解决它:
$target=58;
$message="";
$num_tries = (!empty($_POST['num_tries']) ? $_POST['num_tries'] : 0);
这意味着如果之前未提交表单,$num_tries
将为零,否则,该值将是最后提交的值。
然后你需要在隐藏元素中打印
<INPUT type="hidden" name="num_tries" value="<?php echo $num_tries?>">
---------------------------------------------------^^^^
答案 1 :(得分:1)
$message="";
$num_tries=0;
将上述声明更改为$num_tries=isset($_POST["num_tries"]) ? $_POST["num_tries"] : 0;
,这意味着如果设置了post var值,则指定post var value,否则指定0。
然后改变你需要做的是在隐藏元素下打印值。
您可以使用print
或print_r
或echo
。
<INPUT type="hidden" name="num_tries" value="<?php echo $num_tries; ?>">
答案 2 :(得分:0)
您正在使用<?php $num_tries ?>
,它实际上什么都不做。
您需要使用<?php echo $num_tries ?>
(print
也可以,但对于您的用例,echo更有效),以便将值实际放入表单中。
此外,$num_tries = 0;
不会费心阅读现有值。您可以使用$num_tries = $_POST['num_tries'] | 0;
虽然它会在未设置字段时生成PHP通知,如果您关心这一点,请使用isset
和三元运算符或if / else。