防止重复的随机代码生成?

时间:2012-09-27 13:25:25

标签: php recursion

我需要阻止生成的代码产生重复。这是正确的方法吗?还是有更有效的方法?

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;
}

4 个答案:

答案 0 :(得分:3)

无需检查数据库,

<?php

    uniqid (rand(), true); 

?>

答案 1 :(得分:1)

您可以使用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;
}

答案 2 :(得分:1)

如果在生成代码后,会生成另一个重复的内容?

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; 
} 

无需递归。

答案 3 :(得分:0)

是的,有。如果需要,可以连接主键,添加一些唯一列。哈希吧。我不完全确定,但从2个不同的值获得相同哈希的风险非常低。有人说,你更有可能赢得乐透,被小行星摧毁并同时被灯光击中。