php - 从数组中随机选择
问题描述
有这个功能:
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);
有没有办法做到这一点,或者我该怎么做?我想在不先定义数组的情况下使用该函数。一切都在一个地方。谢谢!
注意:我想将它用于无序列表。
解决方案
您可以翻转数组,然后使用array_rand()
,这将反转键值对(因此键变为值,反之亦然)。这意味着当您使用 时array_rand()
,您将获得新的密钥——它最初是值。
echo array_rand(array_flip($items));
- 在https://3v4l.org/7RSVY进行现场演示
如果要定义具有可变数量参数的函数,也可以使用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]));
推荐阅读
- java - 未能通过域名挑战
- angular - 打字稿过滤器成人和儿童
- php - 网页抓取时如何处理 HTTP 410?
- javascript - wavesurfer-js 的问题与预加载的峰值有关
- java - 使用java将具有动态字段的json文件反序列化为类
- unit-testing - 模拟输出显示正确数据时 toHaveBeenCalled() 失败
- sql - 为什么在 PostgreSQL 中创建生成的列时出现错误?
- html - 无法添加我的菜单导航栏的文本颜色
- mysql - 如何编写 SQL 查询来查找他们应该收到的总奖金金额,因为奖金仅针对refers_valid=1 计算
- python - 修复 kivymd 中的字符串问题