我正在尝试使用'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
。
答案 0 :(得分:8)
当$i
到达Z
时,它仍然是<= Z
,因此它会回显并递增,然后再次测试以查看其结果是<= Z
...问题是PHP使用Perl-style character incrementing ....递增Z
给出AA
,AA <== Z
在字母比较中为真,所以它继续回显,递增和测试通过AB
,AC
,AZ
,BA
,BB
等......
只有当它达到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