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

时间:2013-02-07 10:23:28

标签: php arrays

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

有三个按钮(对于三个答案),当点击它时,它将为用户提供0,10或20个点。我用这个来取回积分:

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

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

非常感谢任何帮助。

3 个答案:

答案 0 :(得分:0)

使用数组拼接而不是取消设置导致值变为null但键仍为

答案 1 :(得分:0)

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数组。

答案 2 :(得分:-1)

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

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

?>