我需要防止生成的代碼產生重複。這是正確的方式嗎?還是有更高效的方法?防止重複的隨機代碼生成?
function generate_code()
{
$s = get_random_code();
// check if code is already in db
if (is_in_db($s))
return generate_code();
else
return $s;
}
我需要防止生成的代碼產生重複。這是正確的方式嗎?還是有更高效的方法?防止重複的隨機代碼生成?
function generate_code()
{
$s = get_random_code();
// check if code is already in db
if (is_in_db($s))
return generate_code();
else
return $s;
}
生成如果生成代碼之後,另一個複製?
function generate_code()
{
$s = get_random_code();
// check if code is already in db
while (is_in_db($s)) {
$s = get_random_code();
}
return $s;
}
無需做遞歸。
你可以使用一個while循環,以避免可能的遞歸深度限制:
function generate_code()
{
$s = get_random_code();
// check if code is already in db
while (is_in_db($s))
$s = get_random_code();
return $s;
}
是的。連接你的主鍵,如果你願意的話,添加一些獨特的列。並散列它。我並不完全確定,但從兩個不同值獲得相同散列的風險非常低。有人說,你更有可能贏得樂透,被小行星毀壞,同時受到照明的衝擊。
看起來好像沒什麼問題。 – Peon
你應該添加一個遞歸限制 – Tchoupi
@MathieuImbert你如何做到這一點?它只是反變量? – IMB