我想要一个函数来生成所有可能的字母组合。函数唯一需要的参数是字符数。因此,例如,如果我传递'2',它将生成:
aa
ab
ac
ad
ae
..
..
zz
如果我通过3,它将生成:
aaa
aab
...
...
aaz
...
zzz
等等,如果我通过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