PHP算法:打印a、aa、aaa、ab、aab直到zzz。

7

您好,我需要打印从a到zzz的字母,最多三个字母,例如我的输出应该是:

A
B
.
.
.
Z
AA
AB
.
.
AZ
BA
BB
.
.
.
ZZ
AAA
AAB
.
.
.
.
ZZZ

我已经努力尝试了过去五个小时,但是我找不到任何逻辑,并且我尝试了以下代码

<?php
for ($i=65; $i<=90; $i++) { 
for ($i=65; $i<=90; $i++) {     
for ($i=65; $i<=90; $i++) {     
    echo chr($i).chr($i).chr($i)."<br>";      
}
}
}
?>
2个回答

14

PHP有一个便利的功能,使得对字符串进行递增操作时与您所描述的完全相同。

因此,您只需要:

for( $i="A"; $i!="ZZZ"; $i++) {
    echo $i."<br />";
}

编辑:修订的解决方案最后打印“ZZZ”(而不是“ZZY”):

$i = 'A';
do {
  echo $i . '<br />';
} while ( $i++ != 'ZZZ' );

1
很好的解决方案,但要注意那个 off by 1 错误! $i!="AAAA" 作为条件即可解决。 - jon_darkstar
值得注意的是,此结束于“ZZY”。否则,这是一个很棒的解决方案。 - holographic-principle
我冒昧提交了一个替代方案,以期望的字符串结尾,并且不会强迫您考虑下一个字符串是什么。 - holographic-principle
@finishingmove 我修改了你的编辑,因为我意识到它看起来像一个 do ... while 循环。关键是要认识到 if ( $i ) { } $i++if ( $i++ ) 是相同的(后增量“返回”原始值,而不是新值),这使得测试成为循环中的最后一件事。 - IMSoP
顺便提一下,“相关问题”框指向了这个问题,解释了为什么使用除等于(<<=等)以外的比较来跳出循环是行不通的,尽管这似乎是合乎逻辑的事情。 - IMSoP

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接