0

3 つのフォルダーがあり、これらのフォルダーにはそれぞれ 40 個のタスクがあります。これらのフォルダーをランダム化する必要があります。これは、使用してshuffle($folder)からセッション配列に保存することで行いました。

しかし、私が見つけている問題は、たとえばユーザーが実験の開始をクリックしたときなど、後でそれらを取得する方法です:

最初の試行に進みます。この時点で、最初の配列を調べてから、switch ステートメントから正しいフォルダーを選択し、テストを開始します。

しかし、その後、2 番目と 3 番目のフォルダーに移動する際に問題が発生します。これらのフォルダーは毎回ランダム化されるため、フォルダーを特定の場所に指定することはできません。

わかりにくいと思いますので、詳細が必要な場合はお知らせください。コードは投稿していませんが、かなりの量がありますが、これまでに行ったことを誰かが見たい場合は、ドロップボックス リンクを設定して、さまざまなファイルを表示できるようにします。

https://www.dropbox.com/sh/l98z3mzk4cd2105/qxz09lWOM9

編集:

助けてくれてありがとう、私はまだ完全に整理していませんが、提案は確かに役に立ちました. ありがとうございました。なんとか機能するようになったら、完全な更新を投稿します。

4

3 に答える 3

2

説明したことをどのように実装しているかを理解せずに、質問に答えることは困難です。

フォルダ名の配列をシャッフルして、ユーザーにランダムなフォルダにアクセスさせたいですか、それとも 3 つのフォルダすべてにランダムな順序でアクセスさせたいですか?

2 番目と 3 番目のフォルダに移動できないのはなぜですか?

何をしようとしているのか、実装で何が問題になっているのかをより具体的にする必要があります。

編集:うちはマダラはあなたが何を意味しているのか理解しました。3 つのフォルダーすべてに連続してアクセスしているのか (この場合、シャッフルした後に foreach ループを使用して $folder をループすることができるのか)、ユーザーがフォームを送信するたびにランダムな一意のフォルダーにアクセスしているのかどうかはわかりませんでした。後者の場合、うちはマダラがあなたの質問に答えています:)

編集:これを行うことができますか?

shuffle($folder);
foreach($folder as $element)
{
    // $element is your random folder
    // ...
}

ループが終了するまで、各フォルダーを 1 回だけ通過します。好きなだけフォルダを持つことができます。配列内の各要素を循環しているだけです。

于 2012-10-27T15:02:17.377 に答える
0

別の解決策があります。

$folders = array(
                array("foldername"=>"folder1","folderpath"=>"path_to_folder1"),
                array("foldername"=>"folder2","folderpath"=>"path_to_folder2"),
                array("foldername"=>"folder3","folderpath"=>"path_to_folder3"),


);

$randomFolderNo = rand(0,2);

$selectedFolder = $folders[$randomFolderNo];

echo $selectedFolderName = $selectedFolder['foldername'];
echo $selectedFolderPath = $selectedFolder['folderpath'];

SESSION 配列で $folder 配列を使用できます。

于 2012-10-27T15:05:00.947 に答える
0

簡単です。テストを開始した後、使用されたエントリを$folders配列から削除します。そうすれば、再ランダム化されても、繰り返しはありません.:)

于 2012-10-27T15:00:25.850 に答える