标签:php
我需要使用字母数字增量器生成一个序列(或函数来获取“下一个id”).
字符串的长度必须是可定义的,字符必须是0-9,A-Z.
例如,长度为3:
000
001
002
~
009
00A
00B
~
00Z
010
011
etc..
所以我想这个函数可能会像这样使用:
$code = '009'
$code = getNextAlphaNumeric($code);
ehco $code; // '00A'
我自己正在努力解决这个问题,但很奇怪,如果有人之前已经解决了这个问题,并想出一个比我自己更聪明/更强大的解决方案.
有没有人有一个很好的解决这个问题的方法?
解决方法:
像base_convert这样的东西会起作用吗?也许沿着这些方向(未经测试)
function getNextAlphaNumeric($code) {
$base_ten = base_convert($code,36,10);
return base_convert($base_ten+1,10,36);
}
我们的想法是你的代码实际上只是一个基数为36的数字,所以你将那个基数为36的数字转换为基数为10,向它加1,然后将其转换回基数36并返回它.
编辑:刚刚意识到代码中可能存在任意字符串长度,但这种方法可能仍然可行 – 如果先捕获所有前导零,然后将其剥离,则执行基础36 – >基础10转换,添加一个,并添加任何所需的前导零…
标签:php
来源: https://codeday.me/bug/20190716/1480386.html