【发布时间】:2018-10-27 11:21:35
【问题描述】:
我想生成一个由字母数字字符组成的会员编号,删除 i o 和 l 以在键入时避免混淆。在 php 中完成(如果重要,也使用 Laravel 5.7 - 但我觉得这是一个 php 问题)
如果仅使用 0-9,则第一个会员编号将从 00001 开始,第 11 个人将使用 00011。我想使用 0-9 + a-z 的字母数字字符(删除所述字母)
0-9(共 10 个字符),abcdefghjkmnpqrstuvwxyz(共 23 个字符) - 这在每个计数周期(0-10+a-Z)中总共有 33 个字符。而不仅仅是 10 (0-10)
所以第一个会员编号仍然是 00001,而第 12 个现在是 0000a,第 14 个是 0000c,第 34 个是 0001a。
总而言之,我需要一种方法来定义用于计数的字符,这种方法可以根据用户的 id 生成。
我希望我已经解释得足够清楚了。
【问题讨论】:
-
那么,到目前为止,您尝试了什么?
-
字符的单个大小写,这是为了简化可以写或打印在非常小的标签上的项目的代码。想法是它们可以是易于输入表格的短代码。我想使用 aphpa 数字的原因是使用数字的 5 个字符,我们最多只能达到 99,999,其中 5 个数字中的每一个使用 33 个字符,我们可以得到 39,135,393。然后在稍后阶段,如果我们需要更多,我们可以简单地在末尾添加一个 6th,依此类推
-
等一下,第10个id应该是
0000a。你不想在0000a之前使用00010——有几个原因。 1. 你会失去sort()-ability 和 2. 你从“一个字符”到“两个字符”然后回到“一个字符”逻辑。 -
是的,我真的需要设置我自己的计数,而不是 0-9 它需要是 0-9 + a-z(尽管我们计划更改字符的顺序 - 但那不是现在很重要)
-
在基数为 33 的数字中,第 34 位将是 00011。
标签: php uniqueidentifier base-conversion