0

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

共有三个按钮(用于三个答案),单击该按钮会给用户 0、10 或 20 分。我用它来取回积分:

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

initialQuestions();再次运行以获得下一个问题,但这显然会重置我的整个数组,我如何让它跳到下一个问题,从数组中删除前一个项目最终导致它成为一个空白数组?

任何帮助将非常感激。

4

3 回答 3

0

初始问题()?你的数组在哪里?使用 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 数组。

于 2013-02-07T10:33:54.770 回答
0

使用数组拼接而不是未设置导致值被清空但密钥仍然存在

于 2013-02-07T10:25:16.170 回答
-1

您可以从 all_question 数组中随机提取一个问题,并将这个“使用过的”问题保存到 Session 中,然后无论您在 POST 中做什么,下次当您从 all_question 中提取“下一个”问题时,您只需检查它是否已存储在“已使用”会话中,如果是,请再次拉取,如果没有,您得到了您想要的。

<?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;

?>
于 2013-02-08T03:19:04.183 回答