PHPの文字変数の不思議な現象を解説

WBOY
リリース: 2016-07-06 13:34:21
オリジナル
1491 人が閲覧しました

PHP の文字変数を使用すると、意図したとおりに実行されない場合があります。この問題については、エディターが PHP の文字変数の奇妙な現象について説明します。

<script>ec(2);</script>

まず第一に、魔法の PHP は文字データ型をサポートしています。一部の学生は次のコードを書きました。

for ($c = 'a'; $c エコー $c ;
}
しかし、結果は彼が最初から最後まで望んでいたものではありませんでした

a b c d e f g h i j k l m no p q r s t u v w x y z 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 eje ek el em en eo ep eq er es et eu ev ew ex... on to yz

次のような、最初から最後まで印刷を実現する方法はたくさんあります

for ($i = 'a'; $i != 'aa'; $i++)
エコー $i ;


for ($i = ord('a'); $i エコー chr($i) ;


echo implode(' ', range('a', 'z'));

しかし、上に印刷されたあの束が一体何なのかをまだ説明する必要があります。

これは、PHP が単一文字変数の算術演算を処理する場合、C の使用法ではなく Perl の使用法に従っているためです。
Perl で
$a = 'Z';
$a++; //'AA'

Cで

a = 'Z';
a++; //'[' 'Z' の ASCII 値は 90 なので、'[' の ASCII 値は 91 です

以下に示すように、文字変数はインクリメントのみが可能でデクリメントはできず、純粋な文字 (a-z および A-Z) のみをサポートすることに注意してください。 $a="9F9";

$b="9F9";
var_dump(++$a); //"9G0"
var_dump(--$b); //「9F9」は変更されません

そうしたら、このように書いた何人かの生徒が泣きました

$a = "9E0"; var_dump(++$a); // float(10)


#このTMはまた科学表記になりました。 。 。

PHP は決してルールに従いません!

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のおすすめ
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート