php循环输出a-z字母,用于城市列表排序等。

我们在使用php语言时,经常会遇到循环输出,例如for、while等等,而这里一般是用做数字循环,例如1-10等。但有时我们也会用到字母的输出,例如从a-z的输出,用于行业站排序城市名字等。这个应该怎么做呢,下面听cms大学小编细细讲来。

一、错误的方法:

首先按照我们对php的理解,循环语句应该这样写。

折叠PHP 代码
  1. for ($i = 'a'$i <= 'z'$i++){  
  2.     echo "$i\n";  
  3. }  

输出的结果是这样的:

折叠PHP 代码
  1. 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 ar as at 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 dn do dp 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 代码
  1. a  
  2. b  
  3. c  
  4. d  
  5. e  
  6. .  
  7. .  
  8. 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 代码
  1. 在处理字符变量的算数运算时,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 代码
  1. for($i=97;$i<122;$i++){  
  2. echo chr($i).”\n”;  
  3. }  

第二种:

折叠PHP 代码
  1. for($i=ord(‘a’);$i<ord(‘z’);$i++){  
  2. echo chr($i).”\n”;  
  3. }  

第三种:

折叠PHP 代码
  1. foreach(range('a','z'as $word){     
  2.   
  3.     echo $word."<br/>";    
  4.   
  5. }  

第四种:

折叠PHP 代码
  1. for($i=0;$i<26;$i++)  
  2.   
  3.      {  
  4.   
  5.           echo   $str=chr(65+$i).'<br />';  
  6.   
  7.      }  

通过以上的方法我们就可以开心的输出a-z的字母了,至于有何作用,大家自己开发咯!!!

Tags: php   循环
cms大学,为帝国cms用户提供动力
Copyright © 2016 CmsDX.com All Rights Reserved.