php-如何保持任何被洗牌的内容

php-如何保持任何被洗牌的内容,php,Php,我正在做一个小测验,最后的答案是无序的,但我不想看到的是,每当刷新页面时,值都会发生变化,因为它正在被无序化。不管怎样,有没有办法不让它被反复洗牌 例如,当我得到答案“2”时,页面被刷新。。。我希望它停留在回答“2”。。。如果可能,请帮忙,谢谢 echo工作得很好,只是我不希望它在刷新页面时继续洗牌 例如,若你们得到的答案是“3”,你们刷新了,你们仍然得到“3”,但当我刷新它时,现在。由于洗牌数组,我得到了一个不同的值 这是我用来洗牌的代码 <?php $answer = array("

我正在做一个小测验,最后的答案是无序的,但我不想看到的是,每当刷新页面时,值都会发生变化,因为它正在被无序化。不管怎样,有没有办法不让它被反复洗牌

例如,当我得到答案“2”时,页面被刷新。。。我希望它停留在回答“2”。。。如果可能,请帮忙,谢谢

echo工作得很好,只是我不希望它在刷新页面时继续洗牌

例如,若你们得到的答案是“3”,你们刷新了,你们仍然得到“3”,但当我刷新它时,现在。由于洗牌数组,我得到了一个不同的值

这是我用来洗牌的代码

<?php

$answer = array("1", "2", "3", "4", "5", "6");

shuffle($answer);

echo $answer;

?>

这是一个解决方案,需要在用户的浏览会话中使用一个持久的数字。最好的办法是绘制一个随机数,并将该数设置为cookie,甚至将其作为字段参数传递(这不安全,但经过适当的清理,最糟糕的情况是元素的顺序不再是持久的)

将123替换为随机的、一致的数字,以使每位访客获得相同的顺序

$answer = range(1, 6);

consistent_shuffle($answer, 123);
var_dump($answer);

function consistent_shuffle(&$input, $seed) {
    srand($seed);
    usort($input, function($a, $b) {
        return rand(-1, 1);
    });
    srand();
}
当我们调用
rand()
时,通过将相同的号码传递给,我们将始终得到相同的号码。但是,请注意,在两台不同的机器上,订单不一定相同–唯一的保证是在同一台机器上的订单相同,这正是我们所需要的

是一个使用用户定义函数对数组进行排序的函数。我们提供一个随机抽取-1,0或1

在函数末尾调用
srand()
可以保证在使用
一致\u shuffle
后对
rand()
的任何调用都不会总是相同的。忽略这一点可能会使您在每次重新加载都需要一个随机数时,在试图找到一个奇怪错误的原因时感到非常沮丧


此函数适用于任何类型的键和值,但与
shuffle()
类似,修改数组后不会保留键。

检查提交的值(用户答案)是否正在发送,如果没有,则按当前方式进行shuffle,否则,请检查答案。您可能需要在url参数中传递问题数组顺序、在会话中设置、在cookie中设置或在HTML5 localStorage中设置。你在这方面做过什么努力吗?@MikeBrant不,我没有。我是新手,但我会研究你提到的。谢谢。@MikeBrant如果有{if else,elseif}语句,您可以相应地设置条件。