创建一个独特的密钥 - 最有效的方式

Chr*_*len 2 php while-loop

我有两个函数,makeKey()和keyExists().

makeKey()只生成一个5位随机字母数字键,keyExists()接受此键作为其唯一参数,并在表中查找,根据它是否存在返回true/false.

我需要做一些非常简单的事情,但我无法找出最快捷的方法.

我只需要创建一个密钥,如果它存在于表中,则再次创建一个密钥,依此类推,直到返回一个唯一的密钥.我认为一个while循环就足够了?

谢谢,请原谅相当基本的问题,我想我昨天在阳光下煮了我的大脑.

Gum*_*mbo 5

我会使用一个do- while循环:

do {
    $newKey = makeKey();
} while (keyExists($newKey));
Run Code Online (Sandbox Code Playgroud)

这将在每次迭代时生成一个新密钥,直到该密钥尚不存在.


tva*_*son 5

任何依赖于创建,然后检查的解决方案将在关键空间填满时具有可怕的性能.使用自动生成的列(标识或guid)生成唯一密钥会更好.如果需要使用字母数字,请使用映射函数将其转换为您选择的字母表,方法是选择位组并将其用作字母表的索引.

伪代码

alphabet = "ABCDE...789";
key = insert new row, get autogenerated key
alphaKey = "";
while (get n bits from key)
   alphaKey += alphabet[bits]
done
echo alphaKey
Run Code Online (Sandbox Code Playgroud)