Php 从数组中随机选择

Php 从数组中随机选择,php,arrays,Php,Arrays,有以下功能: mt_rand(1,5) =>在1和5之间随机选择 还有另一种方法: $items = array(1, 4, 5, 7, 8); echo $items[array_rand($items)]; 我的问题是关于第二种方法。 我想这样使用它回波阵列随机数(1,4,5,7,8) 有没有办法做到这一点,或者我该怎么做?我想使用函数而不首先定义数组。一切都在一个地方。谢谢 注意:我想将其用于无序列表。您可以翻转数组,然后使用array\u rand(),这将反转键-值对(因此键成为值

有以下功能:

mt_rand(1,5)
=>在1和5之间随机选择

还有另一种方法:

$items = array(1, 4, 5, 7, 8);
echo $items[array_rand($items)];
我的问题是关于第二种方法。 我想这样使用它<代码>回波阵列随机数(1,4,5,7,8)

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


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

您可以翻转数组,然后使用
array\u rand()
,这将反转键-值对(因此键成为值,反之亦然)。这意味着当您使用
array\u rand()
时,您会得到一个新的键,它最初是值

echo array_rand(array_flip($items));
  • 现场演示
如果要定义参数数量可变的函数,也可以使用
func\u get\u args()

函数随机_值(){
//如果没有返回值,则返回false。
如果(func_num_args()==0){
返回false;
}
//获取提供的所有值
$values=func_get_args();
$random=数组随机数($values);
返回$value[$random];
}
  • 现场演示
尽管您可以通过以下方式内联定义数组:

echo array_rand(array_flip([1,3,7,8]);
使用辅助功能

您可以添加辅助功能:

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

谢谢但是我不想定义数组$items=array(1,4,5,7,8);事先。我在寻找一种在一个地方同时使用数组和函数的方法。我不明白-您希望如何确定值(1、4、5、6、8)?在上面的例子中,我给出了一个psedo代码,类似这样:echo array_rand(1,4,5,7,8);这显然是不正确的。所以,你想让它成为一个函数吗?我希望它都在一个地方。我把函数数组和数字写在一起。不是先定义数组,然后将数组传递给函数。你的意思是像
echo array\u rand(array(1,4,5,7,8))
一样简单吗?谢谢,我不用字符串。我想让它保持简单,更容易操作。但是,经过一些搜索和尝试后,我找不到一种方法来实现它。您可以编写一个帮助器函数。我已经编辑了我的答案