【问题标题】:php: How to list from a to z, aa to zz, aA to aZ, and so onphp:如何列出从 a 到 z、aa 到 zz、aA 到 aZ 等
【发布时间】:2021-03-14 13:32:02
【问题描述】:

我想从 a 迭代到 z、A 到 Z、aa 到 zz、AA 到 ZZ、aA 到 zZ、Aa 到 Zz,等等。 当然,长度不限。

例如:

$length = 2;
$limit = str_repeat('z', $length);
for($i='a';$i<=$limit;$i++) {
    if($i==str_repeat('a', $length+1)) break; // stop on 'aaa';
    myCallback($i);
}

结果将是:

a
b
c
...
z
aa
ab
ac
...
zz

所以,我想创建一个与此完全相同的东西,但有上、小和两者。

【问题讨论】:

  • 那么,在提供初始字符串开始时,以增量方式生成字符串列表?

标签: php string algorithm char


【解决方案1】:
function generate($length = 1) {
    $small = range('a', 'z');
    $capital = range('A', 'Z');
    if ($length <= 0) {
        return [];
    } elseif ($length == 1) {
        return array_merge($small, $capital);
    } else {
        $result = [];
        foreach (array_merge($small, $capital) as $letter) {
            foreach (generate($length - 1) as $subLetter) {
                $result[] = $letter . $subLetter;
            }
        }
        return $result;
    }
}

// Sample output
echo '<pre>' . print_r(generate(2), true) . '</pre>';

Try it online

【讨论】:

    猜你喜欢
    • 2022-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 2013-09-28
    • 1970-01-01
    • 2020-09-19
    相关资源
    最近更新 更多