0

私は小さな PHP クイズを作成しており、Multidimensional Array(質問のタイトルと質問を格納する) セットアップrand_arrayがあり、配列の 1 つを選択してページに表示するために使用します。表示された後は、同じ質問が 2 回表示されないように、unset($row);自分から削除します。Multidimensional Array

3 つのボタン (3 つの回答用) があり、それをクリックすると、ユーザーに 0、10、または 20 ポイントが与えられます。ポイントを取り戻すためにこれを使用しました:

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

次の質問を取得するためにもう一度実行initialQuestions();しますが、これにより明らかに配列全体がリセットされます。前の項目が配列から削除され、最終的に空の配列になる次の質問にスキップするにはどうすればよいですか?

どんな助けでも大歓迎です。

4

3 に答える 3

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 配列を保存するのが最善です。

于 2013-02-07T10:33:54.770 に答える
0

unset の代わりに配列 splice を使用すると、値は null になりますが、キーは残ります

于 2013-02-07T10:25:16.170 に答える
-1

all_question 配列から質問をランダムに取り出して、この「使用済み」の質問をセッションに保存すれば、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 に答える