php for循环a到z
首先先介绍2个php内置函数
ord(string):函数返回字符串的首个字符的 ASCII 值。//string:必需。要从中获得 ASCII 值的字符串。
chr(ascll): 函数从指定的 ASCII 值返回字符。//必需。ASCII 值。
第一个函数返回的是以整数的ASCLL值。第二个函数返回的是以整数ASCLL值的字符。
ASCII 值可被指定为十进制值、八进制值或十六进制值。八进制值被定义为带前置 0,而十六进制值被定义为带前置 0x。
1 for($i=ord('a');$i<=ord('z');$i++){ 2 echo chr($i).'<br/>'; 3 }
a到z每个字母的ascii码值是递增不变的,这两个方法就是通过ascii值去做循环计算,用到了php内置的ord()和chr()函数。
还有一种“奇怪现象”就是不用这两个php内置函数的话,直接去for循环到z的时候,后面就会出现aa ab的现象
1 for($i='a';$i<='z';$i++){ 2 echo $i.'<br/>'; 3 }
他就会出现这样的循环奇怪现象。在for循环中每次输出一个换行再观察的话就会发现一个规则,a-z, 下一次输出了aa、ab、ac...az,然后是ba、bb、bc...bz.... 也就是php在给z加一后自动“进位”了。php一个奇特的26进制。当"当前位"的z加1后会向它前面的一位上增加1,然后当前位变为a。'z'++ => ‘aa’,’az’=>’ba’,’zz’=>’aaa'....依次下去。