1

如何使我的 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);

---更新---代码有效。只需在用户注册时为其生成一个简单的会员 ID。优雅我的意思是——也许我破解最终产品代码的方式更简单,或者以不同的方式(可能在循环中)基本上我想学习不同的方式来实现相同的结果。我想要其他编码观点。

输出类似于:TIP#6C1D2

4

1 回答 1

1

由于散列,几乎为零。也就是说,它完全取决于哈希函数。

排除散列,任何给定 id 与另一个给定 id 冲突的机会1/(12*4*10) = 1/480约为 0.2%。但是,新 id 不与任何其他 id 冲突的机会是,您已经拥有的 id 数量1-(1-1/480)^c在哪里。c只有 50 个 id,您已经有 10% 的碰撞机会。

uniqid您可以使用该函数获得唯一的哈希。

于 2012-09-06T17:20:21.977 回答