PHP:如何检查复选框的值并与数组进行比较?
我正在制作一个测验应用程序,其中我有一个PHP中的多项选择题。用户可以获得一个问题和多个选项来选择答案。他们得到的选项将每次刷新(随机/随机函数)。因此,当用户选中复选框,并用正确答案验证选项并为其评分时。例如,如果有3个正确的选择,用户选择全部3个正确的,则得5分,部分正确得3分,错误选择得0分。请在下面找到我的代码。谢谢你抽出时间PHP:如何检查复选框的值并与数组进行比较?,php,arrays,if-statement,Php,Arrays,If Statement,我正在制作一个测验应用程序,其中我有一个PHP中的多项选择题。用户可以获得一个问题和多个选项来选择答案。他们得到的选项将每次刷新(随机/随机函数)。因此,当用户选中复选框,并用正确答案验证选项并为其评分时。例如,如果有3个正确的选择,用户选择全部3个正确的,则得5分,部分正确得3分,错误选择得0分。请在下面找到我的代码。谢谢你抽出时间 <!DOCTYPE html> <html lang="en"> <head> <title>Bootstrap
<!DOCTYPE html>
<html lang="en">
<head>
<title>Bootstrap Example</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<link rel="stylesheet" href="css/style.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</head>
<body>
<nav class="navbar navbar-inverse"></nav>
<div class="container-fluid text-center">
<div class="row content">
<div class="col-sm-2 sidenav">
<p> </p>
</div>
<div class="col-sm-8 text-left">
<h1>Question 1</h1>
<p>Multiple choice question</p>
<div class="row"> </div>
<hr>
<p>Which of the following cities are in India?</p>
<?php
$a=array("London","Mumbai","Berlin","Tokyo","Delhi", "Patna" , "Lahore");
$random_keys=array_rand($a,7);
shuffle($a);?>
<div class="form-check">
<form class="form-inline" action="#" method="post">
<div class="checkbox">
<label class="form-check-label">
<input class="form-check-input" type="checkbox" name="check_list[]" value="<?php echo $a[$random_keys[0]]?>">
<?php echo $a[$random_keys[0]]."<br>";?>
<input class="form-check-input" type="checkbox" name="check_list[]" value="<?php echo $a[$random_keys[1]]?>">
<?php echo $a[$random_keys[1]]."<br>";?>
<input class="form-check-input" type="checkbox" name="check_list[]" value="<?php echo $a[$random_keys[2]]?>">
<?php echo $a[$random_keys[2]]."<br>";?>
<input class="form-check-input" type="checkbox" name="check_list[]" value="<?php echo $a[$random_keys[3]]?>">
<?php echo $a[$random_keys[3]]."<br>";?>
<input class="form-check-input" type="checkbox" name="check_list[]" value="<?php echo $a[$random_keys[4]]?>">
<?php echo $a[$random_keys[4]]."<br>";?>
<input class="form-check-input" type="checkbox" name="check_list[]" value="<?php echo $a[$random_keys[5]]?>">
<?php echo $a[$random_keys[5]]."<br>";?>
<input class="form-check-input" type="checkbox" name="check_list[]" value="<?php echo $a[$random_keys[6]]?>">
<?php echo $a[$random_keys[6]]."<br>";?> </label>
</div>
<div class="form-group">
<button type="submit" class="btn btn-default" name="submit">Submit</button>
</div>
</form>
<?php
$totalscore = 0;
if(isset($_POST["submit"])){
if (!empty($_POST["check_list"])){
echo "<p> You Selected: </p>";
foreach ($_POST["check_list"] as $answers)
echo "<p>".$answers ."</p>";
}
else{
echo "Please make atleast one selection.";
}
}
?>
</div>
</div>
<br>
<br>
</div>
</div>
</div>
<footer class="container-fluid text-center">
<p>SM (c) 2018</p>
</footer>
</body>
</html>
引导示例
问题1
选择题
以下哪个城市在印度
正如juakali92所说,可以使用两个数组。您可以做的是创建另一个包含正确答案的数组。然后将包含用户答案的数组与正确答案数组与array_diff()函数进行比较,找出错误答案的计数。使用count()获取正确答案的计数和正确答案的最大计数。然后用这些数据进行比较/做任何你想做的事情
下面是一个例子:
<?php
$totalscore = 0;
// All answers
$a = array("london", "mumbai", "berlin", "tokyo", "delhi", "patna", "lahore");
$rnd = array_rand($a, 7);
shuffle($a);
// Correct answers for same questions
$c = array("mumbai", "delhi", "patna");
// Check answer
if (isSet($_POST['submit'])) {
$user_answerArr = $_POST['check_list'];
// Get count of wrong answers
$wrongCount = count(array_diff($c, $user_answerArr));
// Max points for right answers
$maxPoints = count($c);
// For this example each right answer gives 1 point
$totalscore += $maxPoints - $wrongCount;
echo "Score: " . $totalscore;
}
?>
<form method="post">
<input type="checkbox" name="check_list[]" value="<?php echo $a[$rnd[0]]; ?>"/> <?php echo $a[$rnd[0]] ?> <br>
<input type="checkbox" name="check_list[]" value="<?php echo $a[$rnd[1]]; ?>"/> <?php echo $a[$rnd[1]] ?> <br>
<input type="checkbox" name="check_list[]" value="<?php echo $a[$rnd[2]]; ?>"/> <?php echo $a[$rnd[2]] ?> <br>
<input type="checkbox" name="check_list[]" value="<?php echo $a[$rnd[3]]; ?>"/> <?php echo $a[$rnd[3]] ?> <br>
<input type="checkbox" name="check_list[]" value="<?php echo $a[$rnd[4]]; ?>"/> <?php echo $a[$rnd[4]] ?> <br>
<input type="checkbox" name="check_list[]" value="<?php echo $a[$rnd[5]]; ?>"/> <?php echo $a[$rnd[5]] ?> <br>
<input type="checkbox" name="check_list[]" value="<?php echo $a[$rnd[6]]; ?>"/> <?php echo $a[$rnd[6]] ?> <br>
<button type="submit" name="submit">Submit</button>
</form>
你没有设置任何答案来核对吗?拥有两个独立的数组,如correctAnswers和incorrectAnswers,从这两个数组中提取随机值,并将它们合并到一个数组中。然后,您所要做的就是在每个$\u POST[“check\u list”]
中循环,并在正确答案数组中的循环值上使用,
,如果正确,则将其添加到总分中。谢谢@Juakali92,您能帮助我吗。我不确定,我是一个新的编码。这是什么家庭作业?如果是这样的话,我想如果你按照我的建议去做会更好,如果你陷入困境,我会帮助你