PHP如何获取与数组值不同的随机数

例:
我有3个值的数组:

0 = 1
1 = 4
2 = 5

我想得到一个随机

$random = rand(1, 5);

但是我需要获取一个不同于数组值的数字.我需要它返回2或3.

解决方法:

这应该为您工作:

(这里我创建了一个范围,从该范围中您将获得range()随机数.然后,我将不再使用array_diff()删除这些您不想要的数字.最后,您可以简单地使用array_rand()获得一个随机键/数字)

<?PHP

    $blacklist = [1, 4, 5];
    $range = range(1, 5);
    $randomArray = array_diff($range, $blacklist);
    echo $randomArray[array_rand($randomArray, 1)];

?>

输出

2 or 3

编辑:

只是做了一些基准测试,使用循环的方法比上面的代码慢得多!

我从1 … 100’000创建了一个数组(黑名单),从1 … 100’001创建了一个随机数数组.

因此,该脚本只能创建一个/唯一的随机数.使用loop方法,您会得到一个错误

Fatal error: Maximum execution time of 30 seconds exceeded

上面发布的代码平均需要1.5秒.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...