实施例: 我有一个包含3个值的数组:
0 = 1
1 = 4
2 = 5
我想获得一个像
这样的随机数字$random = rand(1, 5);
但我需要得到一个与数组值不同的数字。我需要它返回2或3。
答案 0 :(得分:0)
这应该适合你:
(在这里,我创建了使用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的随机数字数组。
因此脚本应该只创建一个/唯一的随机数。使用循环方法会出现错误:
致命错误:超过30秒的最长执行时间
使用上面发布的代码,平均需要1.5秒。