我有以下PHP代码,它使用rand()
生成随机数,并且不确定在max int之前没有重复项,这是一个跟踪已使用数字的会话。如果randoms较大,那么max应该永远不要太高,所以速度不是问题,这种方法到目前为止工作得很好。 HOWERVER ...
function random($min,$max) {
if(count($_SESSION["randoms"])==5) {
unset($_SESSION["randoms"]);
}
$rand = rand($min,$max);
echo "Chosen Random: $rand<br>";
if(@in_array($rand,$_SESSION["randoms"]) && count($_SESSION["randoms"])!=0) {
echo "<strong>In Array: </strong>Do It Again<br>\n";
random($min,$max);
}
else {
echo "<strong>All Good </strong> Return $rand as number and include in array!<br>\n";
$_SESSION["randoms"][] = $rand;
return $rand;
}
}
我有几个echo块来帮助调试。一切正常,但是当在递归上调用随机数时,它会继续运行,直到它找到一个不在数组中的数字并回显“All Good”并将其添加到数组中,但不会返回它。如果数字不在数组中,那么它将返回正常。我很困惑为什么它会回显“All Good”并将其添加到数组中,但不会将其返回到脚本的其余部分中使用。