Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php dose array_rand()可以随机返回所有密钥_Php_Arrays - Fatal编程技术网

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/>";
}