【发布时间】:2017-02-06 15:45:00
【问题描述】:
我需要一个长度最大为 6 且混合了数字和字母的字符串。我检查了:
How can I make short random unique keys, like YouTube video IDs, in PHP?
和
这非常有用,但他们制作长度为 10 - 12 的字符串。我的问题是这段代码的输出是否总是唯一的?
base_convert(microtime(false), 6, 36);
或
base_convert(uniqid('test',true), 6, 36);
注意:我从基数 6 转换,但输入显然不会是基数 6。我这样做是因为如果从 10 转换为 36,它会产生 10-12 的长度。
【问题讨论】:
-
我认为这根本行不通,因为您正在尝试从基数 6 转换,但输入显然不会是基数 6
-
@apokryfos 是的,我愿意。我这样做是因为如果我从 10 转换为 36,它会产生 10-12 的长度。我该怎么办?
-
但是以 6 为底意味着数字都在 0-5 之间,但事实并非如此。你应该改为
substr -
@apokryfos 是的,但我认为如果使用 substr 它永远不会是唯一的
-
保证唯一性是非常昂贵的。在绝大多数情况下获得独特的东西是大多数人的选择。即使是生成 GUID(应该是全局唯一标识符)的算法也只能以高概率生成唯一的。
标签: php string unique microtime