dose array_rand()可以返回所有随机化的密钥


dose array_rand() can return all the keys randomized

据我所知,函数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 />";

与其一次获得一个随机键,不如简单地按随机顺序排列原始数组。PHP提供了函数shuffle()来实现这一点:

$answers = shuffle($answers);
foreach ($answers as $answer) {
    echo $answer."<br/>";
}

您为每一个随机返回写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/>";