PHP:如何检查复选框的值并与数组进行比较



>我正在制作一个测验应用程序,其中我在PHP中有一个多项选择题。用户得到一个问题和多个选择来选择答案。他们获得的选项每次都会刷新(随机播放/兰德函数(。因此,当用户选中复选框并且选项会得到正确答案的验证并对其进行评分时。例如,如果有 3 个正确的选择并且用户选择所有 3 个正确,则获得 5 分,部分正确,他们获得 3 分,对于错误的选择,他们得到 0。请在下面找到我的代码。谢谢你的时间,

<!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>&nbsp;</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>

正如 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>

最新更新