PHP随机数没有重复

  • 本文关键字:随机数 PHP php random
  • 更新时间 :
  • 英文 :


似乎是重复的标题,但是我访问了所有链接,没有任何页面对我有帮助。

我有以下代码:

//Check if form was submitted
if($_POST){
    $number = $_POST['number'];
    $selected_choice = $_POST['choice'];
    $next=$number+1;
    $total=4;
    //Get total number of questions
    $query="SELECT * FROM `questions` LIMIT 4";
    $results = $mysqli->query($query) or die($mysqli->error.__LINE__);
    $total=$results->num_rows;
    //Get correct choice
    $q = "select * from `choices` where question_number = $number and is_correct=1";
    $result = $mysqli->query($q) or die($mysqli->error.__LINE__);
    $row = $result->fetch_assoc();
    $correct_choice=$row['id'];

    //compare answer with result
    if($correct_choice == $selected_choice){
        $_SESSION['score']++;
    }
    if($number == $total){
        header("Location: final.php");
        exit();
    } else {
            header("Location: formular1.php?n=".$next."&score=".$_SESSION['score']);
    }
}

我需要做的是在提交表单时获得一个随机数,但是该数字必须是唯一的,并且在会话结束之前不重复。

我尝试过:

$number = range(1, 99);
shuffle($number);

..但是我不知道如何整合:(谢谢!

您使用洗牌数组的想法很好,只需将其存储在会话变量中:

session_start();
if (!isset($_SESSION["numbers"]) || !count($_SESSION["numbers"])) {
    $_SESSION["numbers"] = range(1, 99);
    shuffle($_SESSION["numbers"]);
}
$next = array_pop($_SESSION["numbers"]);

最新更新