剂量array_rand()可以随机返回所有键

时间:2014-10-11 18:11:59

标签: php arrays

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

2 个答案:

答案 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/>";