3

私はこのコードを持っています

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

私は質問があります

$i <="y"

それはまだ正しく、反響します

a->y

しかし、 $i<="z"上記のようにすると、結果は次のようになります。

abcdefghijklmnopqrstuvwxyzaaabacadaeafagahaiajakalamanaoapaqarasatauavawaxayazbabbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzcacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczdadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzeaebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezfafbfcfdfefffgfhfifjfkflfmfnfofpfqfrfsftfufvfwfxfyfzgagbgcgdgegfggghgigjgkglgmgngogpgqgrgsgtgugvgwgxgygzhahbhchdhehfhghhhihjhkhlhmhnhohphqhrhshthuhvhwhxhyhziaibicidieifigihiiijikiliminioipiqirisitiuiviwixiyizjajbjcjdjejfjgjhjijjjkjljmjnjojpjqjrjsjtjujvjwjxjyjzkakbkckdkekfkgkhkikjkkklkmknkokpkqkrksktkukvkwkxkykzlalblcldlelflglhliljlklllmlnlolplqlrlsltlulvlwlxlylzmambmcmdmemfmgmhmimjmkmlmmmnmompmqmrmsmtmumvmwmxmymznanbncndnenfngnhninjnknlnmnnnonpnqnrnsntnunvnwnxnynzoaobocodoeofogohoiojokolomonooopoqorosotouovowoxoyozpapbpcpdpepfpgphpipjpkplpmpnpopppqprpsptpupvpwpxpypzqaqbqcqdqeqfqgqhqiqjqkqlqmqnqoqpqqqrqsqtquqvqwqxqyqzrarbrcrdrerfrgrhrirjrkrlrmrnrorprqrrrsrtrurvrwrxryrzsasbscsdsesfsgshsisjskslsmsnsospsqsrssstsusvswsxsysztatbtctdtetftgthtitjtktltmtntotptqtrtstttutvtwtxtytzuaubucudueufuguhuiujukulumunuoupuqurusutuuuvuwuxuyuzvavbvcvdvevfvgvhvivjvkvlvmvnvovpvqvrvsvtvuvvvwvxvyvzwawbwcwdwewfwgwhwiwjwkwlwmwnwowpwqwrwswtwuwvwwwxwywzxaxbxcxdxexfxgxhxixjxkxlxmxnxoxpxqxrxsxtxuxvxwxxxyxzyaybycydyeyfygyhyiyjykylymynyoypyqyrysytyuyvywyxyyyzxqxrxsxtxuxvxwxxxyxzyaybycydyeyfygyhyiyjykylymynyoypyqyrysytyuyvywyxyyyzxqxrxsxtxuxvxwxxxyxzyaybycydyeyfygyhyiyjykylymynyoypyqyrysytyuyvywyxyyyz

理由がわかりません、誰か助けてくれませんか?

4

6 に答える 6

6

文字のインクリメントについて、 PHP のドキュメントに書かれている内容を見てみましょう。

PHP は、C ではなく文字変数の算術演算を扱うとき、Perl の規則に従います。たとえば、PHP と Perl では $a = 'Z'; $a++; $a を 'AA' に変換しますが、C では a = 'Z'; ++; a を '[' に変換します ('Z' の ASCII 値は 90、'[' の ASCII 値は 91)。文字変数はインクリメントできますが、デクリメントはできません。また、プレーン ASCII 文字 (az および AZ) のみがサポートされていることに注意してください。他の文字変数をインクリメント/デクリメントしても効果はなく、元の文字列は変更されません。

于 2013-03-04T13:32:16.903 に答える
3

az を印刷しようとしている場合は、PHP のrange関数が役立ちます。

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

foreach (range('a', 'z') as $letter) {
    echo $letter;
}
于 2013-03-04T13:31:40.203 に答える
0

なぜこれが起こっているのか、なぜこのようにするのかわかりません。しかし、すべての文字azを含む配列(?)が必要な場合は、次のことを試してください。

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

于 2013-03-04T13:33:57.923 に答える
0

また、これを試すことができます:

for($i="a"; $i != "aa"; $i++)
{
  echo $i;
}
于 2013-03-04T13:33:01.833 に答える
0

2 回目のインクリメントからの for ループでは最初に動作し、次に条件をチェックするので、ここでは最後に $i="Z" のとき、($i<="z") の後に ($i++) を増やしたときにチェックします。 value, $i は "z" から "aa" になり、これもまた "z" より小さいため、ループは "yz" まで続きます。

于 2013-03-04T13:55:45.123 に答える