任何人都可以向我解释原因:

    <?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 x y z aa ab ac ad ae af
ag ah ai aj ak al am a a a ap aq ar as at au av aw ax ay az ba bb bc
bd是bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw bx由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 d ce eb ec ed ee ef eg eh ei jeek el emeo epeq
er es et eu ev ew ... on yz


但是它可以正常工作

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


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

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

最佳答案

请参见increment operator手册:


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

10-01 17:26
查看更多