我需要防止生成的代码产生重复。这是正确的方法还是有更有效的方法?
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 个不同的值获得相同哈希的风险非常低。有人说,你更有可能赢得乐透,同时被小行星摧毁并被闪电击中。