从数组中随机选择

时间:2019-07-16 19:34:49

标签: php arrays

有此功能:

mt_rand(1,5)

=>在1到5之间随机选择。

和另一种方法:

$items = array(1, 4, 5, 7, 8);
echo $items[array_rand($items)];

我的问题是关于第二种方法。 我想以这种方式使用它。 echo array_rand(1,4,5,7,8);

有没有办法做到这一点,或者我该怎么做?我想先使用函数定义数组。一切都集中在一个地方。谢谢!

注意:我想将其用于无序列表。

2 个答案:

答案 0 :(得分:2)

您可以翻转数组,然后使用array_rand(),这将反转键值对(因此键成为值,反之亦然)。这意味着当您使用array_rand()时,您将获得新的密钥-原来是值。

echo array_rand(array_flip($items));

如果要使用可变数量的参数定义函数,也可以使用func_get_args()来实现。

function random_value() {
    // If there were no values returned, return false.
    if (func_num_args() == 0) {
        return false;
    }

    // Get all the values supplied
    $values = func_get_args();
    $random = array_rand($values);
    return $values[$random];
}

尽管您可以通过

内联定义数组
echo array_rand(array_flip([1, 3, 7, 8]));

答案 1 :(得分:1)

使用辅助功能

您可以添加辅助功能:

function arr_rand($array){    
    return $array[array_rand($array)];
}