例:
我有3个值的数组:
0 = 1
1 = 4
2 = 5
$random = rand(1, 5);
解决方法:
这应该为您工作:
(这里我创建了一个范围,从该范围中您将获得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秒.