初学PHP,这段测试代码的初始化错在哪儿?怎么改?
问题描述:
<?php
$number_to_guess = 42;
$num_tries = (isset($_POST['num_tries']))? $num_tries+1:1;
if(!isset($_POST['guess']))
$message = "Welcome to the guessing machine!";
elseif(!is_numeric($_POST['guess']))
$message = "Not a num!";
else if($_POST['guess'] == $number_to_guess)
$message = "Well Done!";
else if($_POST['guess'] > $number_to_guess)
$message = $_POST['guess']." is too big, Try a smaller one!";
else if($_POST['guess'] < $number_to_guess)
$message = $_POST['guess']." is too small, Try a bigger one!";
else
$message = "I am terribly confused!";
echo $_SERVER['PHP_SELF'];
?>
<!DOCTYPE html>
<html>
<head>
<title>A HTML/PHP that calls itself!</title>
</head>
<body>
<h1>
<?php
echo "Guessing Result:<br/>\"".$message."\"";
?>
</h1>
<p><strong>Guess number:</strong>
<?php
echo $num_tries;
?>
</p>
<form method="post" action="
<?php
echo $_SERVER['PHP_SELF'];
?>
">
<p><label for="guess">Type your guess here:</label><br/>
<input type="text" id="guess" name="guess"/></p>
<input type="hidden" name="num_tries" value="
<?php
echo $num_tries;
?>" /></p>
<button type="submit" name="submit" value="send">Guess it!</button>
</form>
</body>
</html>
答
把isset改成empty试一下。
答
$num_tries = (isset($_POST['num_tries']))? $num_tries+1:1;
问题应该是在这里:
当程序第一次执行到这句话,(isset($_POST['num_tries']))如果为真,将执行$num_tries+1,
但是$num_tries并没有初始化没有定义,所以会报错undefined variable吧
答
当你把isset改成empty后num_tries表单传值会怎么执行?
答
第三行的 num_tries变量没定义