生成されたコードが重複しないようにする必要があります。これは正しい方法ですか、それとももっと効率的な方法がありますか?
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;
}
データベースをチェックする必要はありません、
<?php
uniqid (rand(), true);
?>
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;
}
コードを生成した後、別の複製が生成された場合はどうなりますか?
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;
}
再帰を行う必要はありません。
ええ、あります。主キーを連結し、必要に応じて一意の列を追加します。そしてそれをハッシュします。完全にはわかりませんが、2つの異なる値から同じハッシュを取得するリスクは非常に低いです。宝くじに当選し、小惑星に破壊され、同時に照明に当たる可能性が高いと言う人もいます。