在PHP测试中加载下一个数组项


Load next array item in PHP quiz

我正在创建一个小的PHP测试,我设置了一个Multidimensional Array(其中包含我的问题标题和问题),然后我使用rand_array选择其中一个数组并将其显示在我的页面中。显示后,我使用unset($row);将其从Multidimensional Array中删除,这样同一个问题就不会显示两次。

有三个按钮(用于三个答案),当点击时,它会给用户0、10或20分。我用这个来拿回分数:

if (isset($_POST["Answer1"])){
$points = $points + 20;
initialQuestions();
}

我再次运行initialQuestions();以获得下一个问题,但这显然重置了我的整个数组,我如何使它跳到下一个,并从数组中删除上一项,最终使其成为一个空数组?

任何帮助都将不胜感激。

使用数组拼接而不是取消设置,因为值为null,但密钥保持

initialQuestions()?你的阵列在哪里?使用initialQuestions($question_array)并返回不带当前问题的数组;

像这样的

$questions = array('your array');
function initialQuestions($questions) {
//get some question
//remove it from array
return $questions;//return this array
}

然后

if (isset($_POST["Answer1"])){ $points = $points + 20; $questions = initialQuestions($questions); 

或全球化$questions数组

function initialQuestions() {
global $questions;
//get some question
//remove it from array
}

但对我来说最好的是使用$_SESSION来存储您的$question数组。

您可以从all_question数组中随机提取一个问题,并将这个"used"问题保存到Session中,然后无论您在POST中做什么,下次当您从all_problem中提取"next"问题时,您只需检查它是否已存储在"used"Session中,如果是,则再次提取,如果不是,则表明您得到了所需内容。

<?php
session_start();
$all_question = array(
    //put all your question here...
);
//pull a question out
$new_question = pull_question( $all_question );
//save this question to the 'used' session
$_SESSION['used_question'][] = $new_question;
?>