【发布时间】:2017-04-06 01:59:10
【问题描述】:
我正在做一个我在网上找到的练习来自学php。我正在制作的程序是一个“猜数字”游戏,我需要在其中生成一个随机数来被猜。在不使用类并使用html 输入框进行用户输入时,我在练习中取得了成功:
<?php
if(isset($_POST['number'])) {
$number = $_POST['number'];
} else {
$number = rand(1,99);
}
if($_POST["guess"]) {
// grab the user input guess
$guess = $_POST['guess'];
$number = $_POST['number'];
$output = '';
static $count = 0; //Initialize count
if ($guess < $number) {
$output .= "$guess" . "<br />" . "Guess Higher";
$count++;
} elseif($guess > $number) {
$output .= "$guess" . "<br />" . "Guess Lower";
$count++;
} elseif($guess == $number) {
$count++;
$output .= "$guess" . "<br />" . "You got it!" . "<br />" . "You guessed it in " . $count . " trials";
}
} ?>
<!DOCTYPE html>
<html>
<head>
<title>Guess A Number</title>
</head>
<body>
<form action="NumberGuess.php" method="post">
<label for="guess">Guess A Number:</label><br/ >
<input type="text" name="guess" />
<input name="number" type="hidden" value="<?= $number ?>" />
<input name="submit" type="submit" />
<br/>
<?php echo $output ?>
<br/>
</form>
</body>
</html>
但是,现在我想使用json 作为输入并使用类/对象来重复练习。我尝试使用rand() 生成随机数,但是它会导致问题并且页面无法加载:
class NumberGuess {
protected $guess = 0;
const randNumber = rand(1,99);
protected $isNumber = false;
protected $higher = true;
function __construct($inputGuess) {
$this->guess = $inputGuess;
}
public function getResult() {
$this->numberChecker();
if($this->higher == true) {
$this->higher = "higher";
} elseif($this->higher == false) {
$this->higher = "lower";
}
if($this->isNumber == false) {
return $this->guess . " is incorrect, " . "try guessing " . $this->higher;
} elseif($this->isNumber == true) {
return $this->guess . " is correct!";
}
}
private function numberChecker() {
if($this->guess < self::randNumber) {
$this->higher = true;
$this->isNumber = false;
} elseif($this->guess > self::randNumber) {
$this->higher = false;
$this->isNumber = false;
} elseif($this->guess == self::randNumber) {
$this->higher = false;
$this->isNumber = true;
}
}
}
if ( isset($_SERVER['QUERY_STRING']) ) {
$inputString = $_SERVER['QUERY_STRING'];
$inputGuess = intval($inputString);
}
$myGuess = new NumberGuess($inputGuess);
echo json_encode($myGuess->getResult());
有人可以向我解释一下如何使用json 在班级中生成随机数吗?
【问题讨论】:
-
这是错误的
const randNumber = rand(1,99);打开基本错误检查,如果你这样做你会得到一个致命错误 -
谢谢@nogad,但你能告诉我有什么问题吗?
-
你得到的错误是:“PHP Fatal error: Constant expression contains invalid operations in”手册解释了原因:php.net/manual/en/language.oop5.constants.php“值必须是常量表达式,而不是(例如)变量、属性或函数调用。"
-
好的,但如果我将其更改为受保护/公共/静态,我仍然会收到错误
-
只需在构造函数中创建一个只需添加:
$this->randNumber= rand(1,99);然后使用$this->randNumber