Luk*_*uke 5 php arrays sorting shuffle
我正在运行一个测验制作网站.我希望以洗牌的顺序向用户显示问题的答案.
我试图避免存储答案呈现给用户的顺序,如果我要随机随机播放它们.
我想以可预测的方式改变答案,以便我可以稍后以同样的方式重复洗牌(显示结果时).
我认为我可以按一定的数字来回填答案列表(使用排序中的数字,或者通过ID号识别多种类型的排序. 这样我可以简单地存储它们被洗牌的数字.并记得这个数字,以便再次将它们重新调整为相同的顺序.
这是我到目前为止所拥有的骨架,但是我没有任何逻辑可以将这些答案放回洗牌顺序中的$ shuffled_array中.
<?php
function SortQuestions($answers, $sort_id)
{
// Blank array for newly shuffled answer order
$shuffled_answers = array();
// Get the number of answers to sort
$answer_count = count($questions);
// Loop through each answer and put them into the array by the $sort_id
foreach ($answers AS $answer_id => $answer)
{
// Logic here for sorting answers, by the $sort_id
// Putting the result in to $shuffled_answers
}
// Return the shuffled answers
return $shuffled_answers;
}
// Define an array of answers and their ID numbers as the key
$answers = array("1" => "A1", "2" => "A2", "3" => "A3", "4" => "A4", "5" => "A5");
// Do the sort by the number 5
SortQuestions($answers, 5);
?>
Run Code Online (Sandbox Code Playgroud)
是否有技术可以通过传递给函数的数字来改变答案?
PHP 的shuffle函数使用srand给出的随机种子,因此您可以为此设置特定的随机种子。
另外,shuffle 方法更改了数组键,但这可能不是您的最佳结果,因此您可以使用不同的 shuffle 函数:
function shuffle_assoc(&$array, $random_seed) {
srand($random_seed);
$keys = array_keys($array);
shuffle($keys);
foreach($keys as $key) {
$new[$key] = $array[$key];
}
$array = $new;
return true;
}
Run Code Online (Sandbox Code Playgroud)
此功能将保留原始密钥,但顺序不同。