PHP回声char变量错误

问题描述:

我有这样的代码PHP回声char变量错误

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

我有一个问题,如果

$i <="y" 

它仍然是正确的,回声

a->y 

但如果 $i<="z"像上面结果将是:

abcdefghijklmnopqrstuvwxyzaaabacadaeafagahaiajakalamanaoapaqarasatauavawaxayazbabbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzcacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczdadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzeaebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezfafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzgagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzhahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhziaibicidieifigihiiijikiliminioipiqirisitiuiviwixiyizjajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzkakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzlalblcldlelflglhliljlklllmlnlolplqlrlsltlulvlwlxlylzmambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmumvmwmxmymznanbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzoaobocodoeofogohoiojokolomonooopoqorosotouovowoxoyozpapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpwpxpypzqaqbqcqdqeqfqgqhqiqjqkql qmqnqoqpqqqrqsqtquqvqwqxqyqzrarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzsasbscsdsesfsgshsisjskslsmsnsospsqsrssstsusvswsxsysztatbtctdtetftgthtitjtktltmtntotptqtrtstttutvtwtxtytzuaubucudueufuguhuiujukulumunuoupuqurusutuuuvuwuxuyuzvavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsvtvuvvvwvxvyvzwawbwcwdwewfwgwhwiwjwkwlwmwnwowpwqwrwswtwuwvwwwxwywzxaxbxcxdxexfxgxhxixjxkxlxmxnxoxpxqxrxsxtxuxvxwxxxyxzyaybycydyeyfygyhyiyjykylymynyoypyqyrysytyuyvywyxyyyz

我不知道为什么,有人可以帮我吗?

+0

哇,它就像excel a-z,然后aa-az ... – Bakudan 2013-03-04 13:30:41

+1

$ i是一个字符串,i ++可以将它们连接起来 – acutesoftware 2013-03-04 13:30:59

+0

它是什么,你真的希望它打印出来?字母表? – 2013-03-04 13:41:39

看看什么PHP documentation说,关于增加字符:

PHP如下Perl的约定在处理字符变量而不是C的算术运算 。例如,在PHP和Perl中$ a = 'Z'; $ A ++;将$ a变成'AA',而在C a ='Z'中;一个++;将a变成 '['('Z'的ASCII值是90,'['的ASCII值是91)。请注意, 字符变量可以递增但不递减,即使如此 也只支持纯ASCII字符(a-z和A-Z)。 递增/递减其他字符变量不起作用, 原始字符串不变。

+0

Tks男子!所以$ i =“z”,那么$ i ++会给出结果$ i =“aa”对不对? 而“z” 2013-03-04 13:44:43

+0

是的。例如,您可以尝试在$ i =='z'时中止循环。使用“break”。 – Alvaro 2013-03-04 13:45:40

+0

@DucAnh用于“z” tmuguet 2013-03-04 13:51:33

如果你要打印AZ那么PHP的range功能非常有用

http://php.net/manual/en/function.range.php

foreach (range('a', 'z') as $letter) { 
    echo $letter; 
} 
+0

Tks男子,我明白了 – 2013-03-04 13:45:53

你也可以试试这个:

for($i="a"; $i != "aa"; $i++) 
{ 
    echo $i; 
} 

我不知道为什么会这样,为什么你会做这样的..但是如果你只是想一个数组(?)与所有字符a-z,请尝试:

$ myArray = range('a','z');

"aa" <= "z"返回true由于词法比较(这不是你期望的比较),所以你的循环一直持续到"za"

正如在其他的答案中提到,使用range('a', 'z')for($i="a"; $i != "aa"; $i++)

在for循环中,从第2次增量工作第一,然后在最后一所以在这里查询条件时,$ I =“Z”,($ I < =“z”)检查当时($ i ++)当它增加它的值时,$ i变成“z”到“aa”,再次小于“z”,因此循环保持继续到“yz”。