このコードはなぜ単純にAからZまでの文字を出力しないのでしょうか? 質問する

このコードはなぜ単純にAからZまでの文字を出力しないのでしょうか? 質問する
<?php
for ($i = 'a'; $i <= 'z'; $i++)
    echo "$i\n";

このスニペットにより、次の出力が生成されます (改行はスペースに置き換えられます)。

abcdefghijklmnopqrstu vwxyz aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw 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 dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz ea eb ec ed ee ef eg eh ei ej ek el em en eo ep eq er es et eu ev ew ex... on to yz

ベストアンサー1

からドキュメント:

PHP は、文字変数に対する算術演算を扱う場合、C ではなく Perl の規則に従います。

たとえば、Perl では'Z'+1は になり'AA'、C では( 、 )'Z'+1になります。'['ord('Z') == 90ord('[') == 91

文字変数は増加できますが、減少することはできず、プレーン ASCII 文字 (az と AZ) のみがサポートされていることに注意してください。

コメントより:-
<=また、 は辞書式の比較であるため、 であることにも注意してください'z'+1 ≤ 'z'。( であるため'z'+1 = 'aa' ≤ 'z'、 は'za' ≤ 'z'比較が偽となる初めてのケースです。)$i == 'z'たとえば、 の場合には を分割すると機能します。

例はこちら

おすすめ記事