Php dose array_rand()可以随机返回所有密钥
据我所知,函数Php dose array_rand()可以随机返回所有密钥,php,arrays,Php,Arrays,据我所知,函数array\u rand将从数组中选择一个随机键。 但是如果我需要随机返回所有的密钥呢 这是我的密码: $answers=array("$q->answer_1", "$q->answer_2", "$q->answer_right"); $randKey=array_rand($answers,3); echo $answers[$randKey[0]]."<br/>"; echo $answers[$
array\u 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/>";
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 />";
$answers=array(“$q->answer\u 1”、“$q->answer\u 2”、“$q->answer\u right”);
$ranKey=shuffle($answers);
echo$answers[0]。“
”;
echo$answers[1]。“
”;
echo$answers[2]。“
”;
您为每一个随机返回写入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/>";
$answers=array(“$q->answer\u 1”、“$q->answer\u 2”、“$q->answer\u right”、'0'、'1'、'2');
$randKey=array_rand($answers,3);
echo$answers[$randKey[0]]。“
”;
echo$answers[$randKey[1]]。“
”;
echo$answers[$randKey[2]]。“
”;
不需要一次获取一个随机键,只需按随机顺序对原始数组进行排序就容易多了。PHP提供了执行此操作的函数:
$answers = shuffle($answers);
foreach ($answers as $answer) {
echo $answer."<br/>";
}
$answers=shuffle($answers);
foreach($answers作为$answer){
echo$answer.“
”;
}
什么?为什么不只是原始数组呢?请注意,如果查看for数组中的更改日志,您将看到从5.2.10版开始,“生成的密钥数组不再被洗牌”。这就是为什么你要把钥匙按原来的顺序拿回来。谢谢@kingkero和Ben。现在它工作得很好。再次感谢你和+1。kingkero:请将你的评论转换成一个答案,这样它就可以被提升/接受(并且让未来的读者更容易找到)。当然,它不会返回“0”,“1”,“2”
作为我不需要的结果,在ex.1中,它将只从数组返回一个我不需要的键。无论如何,感谢您的努力。shuffle()
返回true
。它会不会变得像做foreach(true as true){echo true.
“;}
$answers = shuffle($answers);
foreach ($answers as $answer) {
echo $answer."<br/>";
}