我有这段代码
<?php
for($i="a";$i<="z";$i++) {
echo $i;
}
?>
我有一个问题,如果
$i <="y"
它仍然是正确的并且回声
a->y
但是如果
$i<="z"
如上所述,结果将是:
abcdefghijklmnopqrstuvwxyzaaabacadaeafagahaiajakalamanaoapaqarasatauavawaxayazbabbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzcacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczdadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzeaebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezfafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzgagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzhahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhziaibicidieifigihiiijikiliminioipiqirisitiuiviwixiyizjajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzkakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzlalblcldlelflglhliljlklllmlnlolplqlrlsltlulvlwlxlylzmambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmumvmwmxmymznanbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzoaobocodoeofogohoiojokolomonooopoqorosotouovowoxoyozpapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpwpxpypzqaqbqcqdqeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzrarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzsasbscsdsesfsgshsisjskslsmsnsospsqs rssstsusvswsxsysztatbtctdtetftgthtitjtktltmtntotptqtrtstttutvtwtxtytzuaubucudueufuguhuiujukulumunuoupuqurusutuuuvuwuxuyuzvavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsvtvuvvvwvxvyvzwawbwcwdwewfwgwhwiwjwkwlwmwnwowpwqwrwswtwuwvwwwxwywzxaxbxcxdxexfxgxhxixjxkxlxmxnxoxpxqxrxsxtxuxvxwxxxyxzyaybycydyeyfygyhyiyjykylymynyoypyqyrysytyuyvywyxyyyz
我不知道为什么,有人可以帮助我吗?
答案 0 :(得分:5)
看看PHP documentation关于增加字符的内容:
PHP在处理算术运算时遵循Perl的约定 关于字符变量而不是C。例如,在PHP和Perl $ a =中 'Z'; $ A ++;将$ a变为'AA',而在C a ='Z';一个++;变成一个 '['('Z'的ASCII值为90,'['的ASCII值为91)。注意 字符变量可以递增但不递减,即使如此 仅支持纯ASCII字符(a-z和A-Z)。 递增/递减其他字符变量没有效果, 原始字符串不变。
答案 1 :(得分:3)
如果您尝试打印a-z,那么PHP的range功能可能很有用
http://php.net/manual/en/function.range.php
foreach (range('a', 'z') as $letter) {
echo $letter;
}
答案 2 :(得分:0)
你也可以试试这个:
for($i="a"; $i != "aa"; $i++)
{
echo $i;
}
答案 3 :(得分:0)
我不知道为什么会这样,或者你为什么这样做..但如果你只想要一个包含所有字符a-z的数组(?),请尝试:
$ myArray = range('a','z');
答案 4 :(得分:0)
"aa" <= "z"
返回true
因为词法比较(这不是您期望的比较),所以您的循环会一直持续到"za"
。
如其他答案所述,请使用range('a', 'z')
或for($i="a"; $i != "aa"; $i++)
答案 5 :(得分:0)
在第二次增量的for循环中首先工作,然后检查条件,所以在这里最后当$ i =“Z”时,($ i&lt; =“z”)检查当时($ i ++)当时它增加了它的值,$ i变为“z”到“aa”,它再次小于“z”,所以循环仍然继续到“yz”。