我们在使用php语言时,经常会遇到循环输出,例如for、while等等,而这里一般是用做数字循环,例如1-10等。但有时我们也会用到字母的输出,例如从a-z的输出,用于行业站排序城市名字等。这个应该怎么做呢,下面听cms大学小编细细讲来。
一、错误的方法:
首先按照我们对php的理解,循环语句应该这样写。
折叠展开PHP 代码
for($i='a';$i<='z';$i++){
echo"$i\n";
}
输出的结果是这样的:
折叠展开PHP 代码
a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq arasat au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw bx by bz ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp cq cr cs ct cu cv cw cx cy cz da db dc dd de df dg dh di dj dk dl dm dndodp dq dr ds dt du dv dw dx dy dz ea eb ec ed ee ef eg eh ei ej ek el em en eo ep eq er es et eu ev ew ex... yz
而我们想要的其实是这样的:
折叠展开PHP 代码
a
b
c
d
e
.
.
z
错误分析:
这有点无语了,其实解决起来也很简单,这里涉及到一个php的特性。
请看php官方链接:http://php.net/manual/en/language.operators.increment.php
其中注意一下这句:
PHP follows Perl's convention when dealing with arithmetic operations on character variables and not C's. For example, in PHP and Perl $a = 'Z'; $a++; turns $a into 'AA', while in C a = 'Z'; a++; turns a into '[' (ASCII value of 'Z' is 90, ASCII value of '[' is 91). Note that character variables can be incremented but not decremented and even so only plain ASCII alphabets and digits (a-z, A-Z and 0-9) are supported. Incrementing/decrementing other character variables has no effect, the original string is unchanged.
翻译过来是这个样子:
折叠展开PHP 代码
在处理字符变量的算数运算时,PHP 沿袭了 Perl 的习惯,而非 C 的。例如,在 Perl 中 ‘Z’+1 将得到 ‘AA’,而在 C 中,’Z'+1 将得到 ‘[‘(ord(‘Z’) == 90,ord(‘[‘) == 91)。注意字符变量只能递增,不能递减,并且只支持纯字母(a-z 和 A-Z)。
所以, 这个问题的原因在于,就是我们的循环停止条件当$i = Z的时候, ++$i成了AA, 而字符串比较时,AA,BB,XX一直到YZ都是小于等于Z的,所以我们的循环从头到尾一直运行到结束。
正确的写法:
第一种:
折叠展开PHP 代码
for($i=97;$i<122;$i++){
echochr($i).”\n”;
}
第二种:
折叠展开PHP 代码
for($i=ord(‘a’);$i
echochr($i).”\n”;
}
第三种:
折叠展开PHP 代码
foreach(range('a','z')as$word){
echo$word."
";
}
第四种:
折叠展开PHP 代码
for($i=0;$i<26;$i++)
{
echo$str=chr(65+$i).'
';
}
通过以上的方法我们就可以开心的输出a-z的字母了,至于有何作用,大家自己开发咯!!!
Tags: php 循环
本文介绍了在PHP中如何正确地循环输出字母a到z,纠正了使用常规循环可能导致的错误,并提供了四种有效的方法,包括使用ASCII值、ord()和chr()函数以及range()函数。这些方法适用于按字母顺序排列城市列表等场景。
247

被折叠的 条评论
为什么被折叠?



