php生成所有可能的字符值

时间:2011-12-24 07:18:48

标签: php

我想要一个函数来生成所有可能的字母组合。函数唯一需要的参数是字符数。因此,例如,如果我传递'2',它将生成:

aa
ab
ac
ad
ae
..
..
zz

如果我通过3,它将生成:

aaa
aab
...
...
aaz
...
zzz

等等,如果我通过4等,请提前谢谢!

4 个答案:

答案 0 :(得分:10)

所有这些复杂的嵌套循环或使用递归都是完全没必要的。

只需使用带有字符的++ incrementor。

$string = 'a';
while ($string != 'aaaaa') {
    echo $string++,PHP_EOL;
}

注意你的结束循环测试...使用!=而不是<或者>类型比较

修改

为了给你你想要的功能:

function combinations($size) {
    $string = str_repeat('a',$size);
    $endLoopTest = str_repeat('z',$size);
    $endLoopTest++;
    while ($string != $endLoopTest) {
        echo $string++,PHP_EOL;
    }
}

答案 1 :(得分:2)

好的,从理论上讲,这很有效。我不能让我的电脑经受试验的折磨。

function combinations($pass, $count = null, $l = ''){
    if(is_null($count)) $count = $pass;
    foreach(range('a','z') as $c){
        $k = $l;
        $k .= $c;
        if($count == 1){
            echo $k;
        }else{
            combinations($pass, $count-1, $k);
        }
    }
}

答案 2 :(得分:2)

见马克贝克的回答是真实的回答。我很难理解PHP,因为我没有编写代码。而且,他似乎更聪明。 :)

<?php 

        function alphabetCombos($length,$prefix = '') {
            for($j = 97; $j < 123; $j++) {
                if ($length > 1) {
                    alphabetCombos($length-1,$prefix . chr($j));
                } else {
                    echo $prefix . chr($j) . '<br />';
                }
            }
        }

        alphabetCombos(2);
?>

答案 3 :(得分:-1)

我可以告诉你两个词的逻辑......你可以申请其余的

foreach ( range('a','z') as $f)
 {
      foreach ( range('a','z') as $s)
      {
          echo "<br/>".$f.$s;
      }
}

参考:range