如何使我的id生成器代码优雅:当用户注册时,他们获得了一个id。生成的id不可能是唯一的?另外 - 我怎样才能使我的代码优雅? 谢谢!
#hash = random url generated from 128 chars
$cac = substr($hash, 64,-60);
$words = array('GET', 'COOL', 'WOW', 'YES', 'NICE', 'BUCK', 'LUCK', 'FUN', 'CASH', 'TIP', 'PEEK', 'TAG');
$rword = rand(0,11);
$syms = array('-', '#', '$', '@');
$rsym = rand(0,3);
$nums = rand(0,9);
$aff_id_temp = $words[$rword] . $syms[$rsym] . $cac . $nums;
$final_id = strtoupper($aff_id_temp);
--- --- UPDATE 代码有效。只需要在用户注册时为其生成简单的联盟ID。我的意思是优雅 - 也许我正在以最简单的方式或以不同的方式(可能在循环中)完成最终产品代码的方式,基本上我想学习不同的方法来实现相同的结果。我想要其他编码观点。
输出类似于:提示#6C1D2
答案 0 :(得分:1)
由于散列,实际上为零。也就是说,它完全取决于哈希函数。
排除哈希值,任何给定ID与另一个给定ID冲突的可能性为1/(12*4*10) = 1/480
,大约为0.2%。但是,新ID不与任何其他ID冲突的可能性为1-(1-1/480)^c
,其中c
是您已有的ID数。只有50个ID,你已经有10%的碰撞几率。
您可以使用uniqid
函数获取唯一的哈希值。