生成数字的增量ID,上下字母

Gia*_*dos 6 php

如何在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)

Riz*_*123 5

这应该适合你:

<?php

    $hello = "aaa";

    //'aaa0' -> 'aaa9'
    for ($count = 0; $count <= 9; $count++)  
        echo $hello . $count . "<br />";
    //'aaaa' -> 'aaaz'
    foreach (range('a', 'z') as $char)
        echo $hello . $char . "<br />";
    //'aaaA' -> 'aaaZ'
    foreach (range('A', 'Z') as $char)
        echo $hello . $char . "<br />";

?>
Run Code Online (Sandbox Code Playgroud)

编辑:

这仅适用于3位数.内存耗尽后肯定是.

<?php

    $array = array();
    $maxLength = 3;
    $output = array();

    ini_set('memory_limit', '-1');
    $time_start = microtime(true);

    foreach(range(0, 9) as $number)
        $array[] = $number;
    foreach(range('a', 'z') as $char)
        $array[] = $char;
    foreach(range('A', 'Z') as $char)
        $array[] = $char;


    function everyCombination($array, $arrLength, $size, $perArr = array(), $pos = 0, &$found = array()) {
        if ($size == $pos) {
            $found[] = vsprintf("%s%s%s", $perArr);
            return;
        }

        for ($count = 0; $count < $arrLength; $count++) {
            $perArr[$pos] = $array[$count]; 
            everyCombination($array, $arrLength, $size, $perArr, $pos+1, $found); 
        }
        return $found;
    }

    $output = everyCombination($array, count($array), $maxLength);

    for($count = 0; $count < count($output); $count++)
        echo $output[$count] . "<br/>";

    echo "DONE!";
    $time_end = microtime(true);
    $time = $time_end - $time_start;
    echo  round($time,2) . " s";

?>
Run Code Online (Sandbox Code Playgroud)


Ali*_*man 2

使用 0,1-9、az 和 AZ 是“Base 62”。在 PHP 中从 10 进制转换为 62 进制非常容易。

<?php
echo base_convert(10123, 10,26), "\n";
// outputs: 'ep9'
echo base_convert('ep9', 26, 10), "\n";
// output 10123
Run Code Online (Sandbox Code Playgroud)