怎么写php中所有可能的单词?

xec*_*ute 5 php arrays letter

可能重复:
生成任意字母到任意长度的所有组合

我试图在php中写出10个字母(zzzzzzzzzz)中所有可能的单词.我怎样才能做到这一点?它看起来像这样:http://i.imgur.com/sgUnL.png

我尝试了一些方法,但它们只是随机制作10个字母而不是从1个字母增加.顺便说一下执行时间以及它的大小并不是问题.我只需要算法,如果有人用代码显示它,当然会更有帮助..

Arn*_*anc 7

function words($length, $prefix='') {
    if ($length == 0) return;
    foreach(range('a', 'z') as $letter) {
        echo $prefix . $letter, "\n";
        words($length-1, $prefix . $letter);
    }
}
Run Code Online (Sandbox Code Playgroud)

用法:

words(10);
Run Code Online (Sandbox Code Playgroud)

在这里试试:http://codepad.org/zdTGLtjY(最多3个字母)


Mch*_*chl 6

版本1:

for($s = 'a'; $s <= 'zzzzzzzzzz'; print $s++.PHP_EOL);
Run Code Online (Sandbox Code Playgroud)

正如保罗在下面的评论中指出的那样,这只会发生zzzzzzzzyz.有点慢(如果有人关心)但正确的版本将是:

//modified to include arnaud576875's method of checking exit condition
for($s = 'a'; !isset($s[10]); print $s++.PHP_EOL);
Run Code Online (Sandbox Code Playgroud)

  • 这些都不符合你的期望.zz给出了一个到zyz的列表,而aaaaaaaaa只给出了一个. (2认同)
  • 第二个用`!isset($ s [10])`而不是`strlen($ s)<= 10`快4倍(如果有人关心的话) (2认同)