据我所知,函数array_rand
将从数组中选择一个随机密钥。
但是,如果我需要随机返回所有密钥呢?
这是我的代码:
$answers=array("$q->answer_1", "$q->answer_2", "$q->answer_right");
$randKey=array_rand($answers,3);
echo $answers[$randKey[0]]."<br/>";
echo $answers[$randKey[1]]."<br/>";
echo $answers[$randKey[2]]."<br/>";
所以键的数量是3,我需要随机返回三个键。 我怎么能这样做?
以我的例子,它不随机化任何东西;它只显示
"$q->answer_1", "$q->answer_2", "$q->answer_right"
kingkero和Ben的正确答案是
$answers=array("$q->answer_1", "$q->answer_2", "$q->answer_right");
$ranKey=shuffle($answers);
echo $answers[0]."<br />";
echo $answers[1]."<br />";
echo $answers[2]."<br />";
答案 0 :(得分:2)
不是一次获得一个随机密钥,而是以随机顺序简单地对原始数组进行排序要容易得多。 PHP提供了shuffle()
函数来执行此操作:
$answers = shuffle($answers);
foreach ($answers as $answer) {
echo $answer."<br/>";
}
答案 1 :(得分:1)
你写的每个随机的回报你3项,但你排列所有3项 试试这个
$answers=array("$q->answer_1", "$q->answer_2", "$q->answer_right");
$randKey=array_rand($answers);
print_r($randKey);
或在数组中添加更多项
$answers=array("$q->answer_1", "$q->answer_2", "$q->answer_right", '0', '1', '2');
$randKey=array_rand($answers,3);
echo $answers[$randKey[0]]."<br/>";
echo $answers[$randKey[1]]."<br/>";
echo $answers[$randKey[2]]."<br/>";