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