0
我有以下PHP代碼,它使用rand()
產生隨機數並且不確定直到max int,一個跟蹤已使用數字的會話是否有重複。如果隨機數較大,最大速度不應該太高以至於不會出現問題,並且這種方式目前效果不錯。 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;
}
}
我在那裏有幾個回聲塊來幫助調試。一切正常,但是當遞歸調用random時,它會繼續執行,直到它找到一個不在數組中的數字並且回顯「All Good」並將其添加到數組中,但不會返回它。如果數字不在數組中,則返回它很好。我很困惑,爲什麼它會回顯「All Good」並將其添加到數組中,但不會將其返回到腳本的其餘部分中使用。
儘管我沒有使用你的例子,並且能夠修改我的''rand = random($ min,$ max);'遞歸,然後在我的if語句之外我放置了返回值,她工作像一個魅力。這是你的評論,幫助我看到我做錯了!謝謝! –