我正在创建一个小的PHP测验并且我设置了Multidimensional Array
(其中包含我的问题标题和问题),然后我使用rand_array
选择其中一个数组并将其显示在我的页。显示后,我使用unset($row);
将其从Multidimensional Array
中删除,以便相同的问题永远不会显示两次。
有三个按钮(对于三个答案),当点击它时,它将为用户提供0,10或20个点。我用这个来取回积分:
if (isset($_POST["Answer1"])){
$points = $points + 20;
initialQuestions();
}
我再次运行initialQuestions();
以获得下一个问题,但这显然会重置我的整个数组,如何让它跳到下一个问题,从数组中删除前一项最终导致它是一个空白数组?
非常感谢任何帮助。
答案 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;
?>