【问题标题】:Loop a 2 letter range循环一个 2 个字母的范围
【发布时间】:2014-09-05 14:13:49
【问题描述】:

我正在尝试实现所有可能的 2 个字母组合的循环。 像

foreach(range(aa,zz) as $i) {...}

我目前的解决方案是:

foreach (range(a, z) as $first) {
    foreach (range(a, z) as $second) {
        //all 2 letter combinations
        echo $first.$second;
    }
}

这让我担心,如果我需要所有可能的 10 个字母组合,就会涉及 10 个循环。

有没有更好的方法来实现这一点?

【问题讨论】:

  • 如果你需要做 141 万亿 (=26^10) 次的事情,那么你可能不应该使用 PHP。

标签: php combinatorics


【解决方案1】:

您可以使用简单的 for 循环遍历字母:

for ($letter = 'aa'; $letter != 'aaa'; ++$letter) {
  echo $letter . '<br>';
}

输出:

aa
ab
...
zy
zz

【讨论】:

  • PHP 中的字符串增量。不错
  • @GundarsMēness 我用一种非常合适的方式更新了我的答案。 (不使用 break 停止循环)我对 char/string 比较感到困惑。
【解决方案2】:
$a = array(1,2,3,4,5,6,7,8,9,0);
$b = array('q','r','s','t','u','v','w','x','y','z');
for($i = 26;$i <= 1000;$i++)
    echo str_replace($a,$b,base_convert ( $i, 10 , 26))."<br />";

只需放置正确的开始和结束位置。

【讨论】:

    猜你喜欢
    • 2020-03-12
    • 2023-03-03
    • 1970-01-01
    • 1970-01-01
    • 2015-08-15
    • 2017-02-03
    • 2015-06-01
    • 2017-02-10
    • 1970-01-01
    相关资源
    最近更新 更多