PHP での数値と文字列の比較

WBOY
WBOYオリジナル
2016-06-23 13:36:181185ブラウズ

PHP の比較演算子は少し奇妙で間違いやすいです。比較ルールは次のとおりです:

1. 2 つの文字のサイズを比較する場合、2 つの文字の ASCII コード サイズが比較されます。わかりやすいですね。

2. 2 つの文字列のサイズを比較する場合、最初の文字から開始して、対応する特定の位置から開始する限り、一方の文字列の現在位置の文字が他方の文字列よりも大きくなります。は位置文字に対応します。つまり、「ba」>「az」など、2 つの文字列のサイズを直接決定できます。これは誰もが知っています。

次に「10」と「a」を比較します。もちろん同じです。まず「1」と「a」の ASCII コードを比較します。「a」の方が大きいです。

3. 数値を文字列/文字と比較する場合、システムはまず文字列/文字を整数/浮動小数点型に変換しようとし、次にそれを比較します。たとえば、「12bsd」は 12, ' に変換されます。 a ' 0 に変換されますが、この時点では、対応する ASCII コード値は数値と比較されないことに注意してください。

実際、同じ理由が当てはまり、「a」+10 の結果も 10 になります。

そして、無視するのは簡単です。数値に変換できない文字列と比較すると、0 は true を返します (演算子は ==)。

最終的に次の結果が表示されます:

1 var_dump('1000000'<'a');    //result: boolean true2 var_dump('a'<1);            //result: boolean true3 var_dump(1<'1000000');      //result: boolean true

私自身のインスタンス:

<?php var_dump('你妹'>='你大爷');?>

出力結果: boolean true

中国語の文字は、最初に Gbk または utf-8 によってトランスコードされ、中国語の文字は最下層で文字に変換

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。