我不确定为什么我的代码无效。它现在正在做的是检查下一个随机生成的城市到国家的用户输入,而不是检查当前的城市。到目前为止,这是我的PHP文件: LINK TO WEBPAGE
<!DOCTYPE html>
<html>
<?php
$cityToCountry = array();
$file = fopen('world_capitals.txt', 'r');
while ( !feof($file) )
{
$line = fgets($file, 2048);
$delimiter = "\t";
$data = str_getcsv($line, $delimiter);
$cityToCountry[$data[0]] = $data[1];
}
fclose($file);
/*
foreach($cityToCountry as $key => $value) {
echo "$key is at $value<br>";
}
*/
$randomCity = array_rand($cityToCountry);
echo $randomCity . " is the capital city of what country?<br><br>";
?>
<form method="post" action="">
<input type="text" name="data"/>
<input type="submit" name="check" value="check"/>
</form>
<?php
if (isset($_POST['check'])) {
$input = $_POST["data"];
echo $input . "<br>";
echo $randomCity . "<br>";
if ($input == $cityToCountry[$randomCity]) {
echo "Correct";
} else {
echo "False";
}
}
?>
</html>
给出“假”结果。我在这做错了什么?已经坚持了几个小时。提前谢谢!
答案 0 :(得分:1)
当脚本从表单接收数据时,变量 $ randomCity 再次发生变化,因为它是从顶部执行的。它与不同的城市进行比较!
您应该发送一个“隐藏”字段,其中包含原始城市的信息。
<form method="post" action="">
<input type="text" name="data"/>
<input type="hidden" name="city" value="<?php echo $randomCity;?>"/>
<input type="submit" name="check" value="check"/>
</form>
然后,在您的支票功能中将 $ randomCity 替换为已发送的数据 $ _ POST [“city”]
答案 1 :(得分:0)
请检查你的if语句,比较city to capital的值,
if ($input == $cityToCountry[$randomCity]) {
echo "Correct";
} else {
echo "False";
}
答案 2 :(得分:0)
请检查您的if语句
if ($input == $randomCity)
{
echo "Correct";
}
else
{
echo "False";
}