我有一个数字数组,我需要制作一个随机数,然后检查该数字是否不在数组中,如果它是另一个随机数,然后检查该数字以查看它是否在数组中。
例子。
array = 1, 2, 4, 5, 7
rand(1, 7) = 3 or 6
如果rand(1,7)= 1,2,4,5或7,它将再次运行,直到它返回3或6.
任何人都知道如何在PHP中执行此操作?
答案 0 :(得分:2)
您可以简单地生成一个随机数并检查它是否已经在数组中
$in = [1, 4, 7, 9];
do {
$rand = rand($min, $max);
} while(in_array($rand, $in));
echo $rand, ' is random, but not in the input array';
上面的代码生成一个随机整数,该整数在$min
和$max
中定义的边界内。如果值已经存在于数组中,则会获取一个新的随机值并与输入数组进行比较。
注意:虽然以上是最小工作代码,但如果输入数组包含所有可能的值,则可以创建无限循环(感谢@Action Dan)。您没有在问题中说明这是否可行。如果有可能你需要解决这个问题。通过限制最大尝试次数或验证输入数组并发出错误消息或增加rand
的第二个参数。
示例(验证,仅推荐用于较小的数组):
$in = [1,2,3,4,5];
$min = 1;
$max = 5;
if(range($min, $max) === $in) {
echo 'No possible value in range';
exit;
}
// code from above
答案 1 :(得分:1)
<?php
$numbers = array(1,2,3,4,5,6,7);
$rand = rand(1,10);
if (in_array($rand, $numbers))
{
echo "Match found";
}
else
{
echo "Match not found";
}
echo "<br />" . $rand;
?>
在这个示例中,我有$ rand故意拥有超过7个,只是为了确保代码运行良好并且打印出“未找到匹配”..
in_array()函数检查$ rand的值是否存在于$ numbers中如果为true ..打印“匹配找到”如果没有打印“匹配未找到”。
希望这会有所帮助..