0

我有三个文件夹,每个文件夹都有 40 个任务。我必须随机化这些文件夹,我已经通过使用shuffle($folder)然后将其存储在会话数组中来完成。

但我发现的问题是我以后如何检索它们,例如当用户点击开始实验时:

它将进行第一次试验,此时它将查看第一个数组,然后从 switch 语句中选择正确的文件夹并开始测试。

但是后来我在转到第二个和第三个文件夹时遇到了问题,因为每次我无法将文件夹指向指定位置时它们都会被随机化。

我知道这听起来令人困惑,所以如果您需要更多详细信息,请告诉我。我还没有发布代码并且有很多,但是如果有人想看看我到目前为止所做的事情,我会设置一个保管箱链接,以便您可以查看各种文件。

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

编辑:

谢谢所有帮助过的人,我还没有完全整理出来,但这个建议肯定有帮助。谢谢你。当我设法让它工作时,我会发布一个完整的更新。

4

3 回答 3

2

如果不了解您如何实施您所解释的内容,就很难回答您的问题。

因此,您正在对一组文件夹名称进行改组,并且您希望用户访问一个随机文件夹,或者以随机顺序访问所有三个文件夹?

为什么您在进入第 2 和第 3 文件夹时遇到问题?

您需要更具体地说明您正在尝试做什么,以及您的实施出了什么问题。

编辑:宇智波斑明白你的意思。我不确定您是否连续访问所有 3 个文件夹(在这种情况下,您可以在改组后使用 foreach 循环遍历 $folder),或者每次用户提交表单时访问一个随机的唯一文件夹。如果是后者,那么宇智波斑已经回答了你的问题:)

编辑:你能做到吗?

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

您只需遍历每个文件夹一次,直到循环结束。您可以拥有任意数量的文件夹。它只是循环遍历数组中的每个元素。

于 2012-10-27T15:02:17.377 回答
0

很简单,开始测试后,从$folders数组中删除使用的条目。这样,即使重新随机化,您也不会重复。:)

于 2012-10-27T15:00:25.850 回答
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 回答