我正在创建一个小的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;
?>