如何在php混合数字,低位和高位字母中生成增量ID?
例如,我尝试过:
$hello = "aaa0";
for ($i=0; $i < 10000; $i++) {
echo $hello++;
echo "<br>";
}
Run Code Online (Sandbox Code Playgroud)
然后,它返回;
aaa0
aaa1
aaa2
...
aaa9
aab0
aab1
Run Code Online (Sandbox Code Playgroud)
我想生成字符串:
aaa0
aaa1
aaa2
...
aaaa
aaab
aaac
...
aaaz
aaaA
Run Code Online (Sandbox Code Playgroud)
第一个数字从0到9,然后是从a到z的字符,然后是从A到Z的字符.每个位置字符都应该在此范围内.
我该怎么做?
编辑:我希望字符串中的每个字符都在此范围内变化.我想从0到9,然后是a到z,然后是A到Z.当它结束时,char变为0,左边的char增加为1.例如:
0000
0001
0002
...
0009
000a
000b
...
000y
000z
000A
000B
...
000X
000Z
0010
0011
0012
....
0019
001a
Run Code Online (Sandbox Code Playgroud) 将R中的整数值或数字整数值编码为基本62编码中的字符向量的快速方法是什么,即只包含[a-zA-Z0-9]的字符串?翻译这个问题的答案是否足够? 将数字基数10转换为基数62(a-zA-Z0-9)
编辑
这是我的解决方案:
toBase <- function(num, base=62) {
bv <- c(seq(0,9),letters,LETTERS)
r <- num %% base
res <- bv[r+1]
q <- floor(num/base)
while (q > 0L) {
r <- q %% base
q <- floor(q/base)
res <- paste(bv[r+1],res,sep='')
}
res
}
to10 <- function(num, base=62) {
bv <- c(seq(0,9),letters,LETTERS)
vb <- list()
for (i in 1:length(bv)) vb[[bv[i]]] <- i
num <- strsplit(num,'')[[1]]
res <- vb[[num[1]]]-1
if (length(num) > 1)
for (i in 2:length(num)) res <- base * res + …Run Code Online (Sandbox Code Playgroud) 我不确定这叫什么,这就是为什么我在搜索它时遇到了麻烦.
我想要做的是取数字并将它们转换为一些字母数字基数,这样数字,比如5000,不会读作'5000'而是'G4u',或类似的东西.这个想法是为了节省空间,也没有明确给定系统中有多少记录.我正在使用php,所以如果有更好的内置这样的东西,甚至更好,但即使这个方法的名称将在这一点上有所帮助.
再次,抱歉没有能够更清楚,我只是不确定这叫什么.
我正在尝试生成像我的应用程序中使用的youtube视频ID的短字符串哈希,但我无法弄清楚什么是最快和最简单的方法,同时使用数组或基于json的字符串提供最短的哈希.
我读了Kevin van Zonneveld 关于这个主题的优秀文章,他根据整数生成alphaID,它有两种方式.还有很好的答案,但我的情况有点不同:
对于数据库中的每个唯一记录,有很多(超过100K)但很小的数据集(数组):
$id = 1;
$set[$id] = array(533 => array('a' => 78), 460 => array('a' => 89));
$set[$id] = array(534 => array('b' => 79), 620 => array('a' => 908));
$set[$id] = array(535 => array('a' => 80), 782 => array('c' => 901));
$id = 2;
$set[$id] = array(672 => array('a' => 12), 852 => array('a' => 122));
$set[$id] = array(542 => array('a' => 67), 372 => array('a' => 831));
$set[$id] = array(573 => array('a' => …Run Code Online (Sandbox Code Playgroud)