首页 > 解决方案 > 从数组中随机选择

问题描述

有这个功能:

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);

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

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

标签: phparrays

解决方案


您可以翻转数组,然后使用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]));

推荐阅读