如何在for循环中打印A-Z中的字母?

时间:2017-09-20 11:48:28

标签: php loops for-loop

我正在尝试使用'A'循环从'Z'打印到for的字母。我能做的是:

foreach (range('A', 'Z') as $char) {
    echo $char . "\n";
}

但我想要实现的是:

for($i = 'A'; $i <= 'Z'; $i++){
echo $i . "<br>";
}

上面的方法给了我一个可笑的长链字母表。

使用,

for($i = 'A'; $i < 'Z'; $i++){   //note the change of '<=' to '<' 
echo $i;
}

确实为 A 提供了字母Y

7 个答案:

答案 0 :(得分:8)

$i到达Z时,它仍然是<= Z,因此它会回显并递增,然后再次测试以查看其结果是<= Z ...问题是PHP使用Perl-style character incrementing ....递增Z给出AAAA <== Z在字母比较中为真,所以它继续回显,递增和测试通过ABACAZBABB等......

只有当它达到YZ时,下一个增量才会ZZ而不是<= Z并且它会终止

解决方案是避免使用<=比较,而是使用!==比较,这需要与Z的下一个增量进行比较,即{{1所以

AA

答案 1 :(得分:2)

由于大写字母字符在ASCII table中相互跟随,您可以使用chr函数

for ($i = 65; $i <= 90; $i++) {
    echo(chr($i).' ');
}

65是ASCII表中的'A',90是'Z'

对于代码清晰度,您可以:(使用ord函数)

for ($i = ord('A'); $i <= ord('Z'); $i++) {
    echo(chr($i).' ');
}

答案 2 :(得分:1)

您可以停止循环AA。由于Z之后的下一个元素是AA

for($i = 'A'; $i != 'AA'; $i++){   //note the change of '<' to '<=' 
echo $i."\n";
}

答案 3 :(得分:1)

使用简单的 do-while 循环:

$l = "A";
do {
    echo $l;
} while($l++ != "Z");

输出:

ABCDEFGHIJKLMNOPQRSTUVWXYZ

答案 4 :(得分:0)

尝试以下

$apl_arr = range('A', 'Z');
for($ii=0;$ii<count($apl_arr);$ii++)
    echo $apl_arr[$ii],',';
exit;

这可能会对你有所帮助

答案 5 :(得分:0)

抱歉,我在之前的回答中犯了一个错误,请试试这个:

char * strcpy(char *destination, const char *source);

答案 6 :(得分:-5)

我认为你应该指定你试图打印的语言。我能想到的最简单的答案是bash中有以下内容:

for i in {A..Z}; do echo $i; done