PHP - 错误的字母循环

时间:2011-12-02 18:14:52

标签: php loops for-loop alphabetical

任何人都可以解释原因:

    <?php
    for ($i = 'a'; $i <= 'z'; $i++){
    echo "$i ";
    }
    ?>

为什么它的输出是:

  

a b c d e f g h i j k l m n o p q r s t u v w y y a a ab ac ad ae af   ag ah ai aj ak al am a a ap ap aq ar as au av aw ax ay az ba bb bc   bd bf bg bh b b b b b b b b b b b b b b b b b b b b b b b b bx 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 dd dh dj dk dl dm dn do dp dq dr ds dt   du dv dw dx dy dz ea e e e e e e e e e e e e e e e e e e e e e em e eo ep eq   埃尔埃斯特恩埃尔出口到了yz

但它的工作正常

    <?php
    for ($i = 'a'; $i != 'aa'; $i++){
    echo "$i ";
    }
    ?>

循环似乎一遍又一遍地运行,直到达到“zz”。

如果我给$i<"aa"它应该可以正常工作,但它只输出“a”。

2 个答案:

答案 0 :(得分:5)

请参阅increment operator的手册:

  

PHP在处理算术运算时遵循Perl的约定   关于字符变量而不是C。例如,在PHP和Perl $ a =中   'Z'; $ A ++;将$ a变为'AA',而在C a ='Z';一个++;变成一个   '['('Z'的ASCII值为90,'['的ASCII值为91)。注意   字符变量可以递增但不递减,即使如此   仅支持纯ASCII字符(a-z和A-Z)。   递增/递减其他字符变量没有效果,   原始字符串不变。

答案 1 :(得分:1)

您不能对字符串执行小于($i < "aa")运算符。

它将转换为数字类型,结果通常是不可预测的。