任何人都可以解释原因:
<?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”。
答案 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"
)运算符。
它将转换为数字类型,结果通常是不可预测的。