ホームページ > バックエンド開発 > PHPチュートリアル > PHP のベテランの方も、初心者の方も、ぜひこの関連質問をご覧ください。

PHP のベテランの方も、初心者の方も、ぜひこの関連質問をご覧ください。

WBOY
リリース: 2016-06-13 12:21:19
オリジナル
850 人が閲覧しました

PHP のベテランも初心者も、この質問は興味深いものです。

 $id1="42022219860323211";<br /> $id2="42022219860323210";<br /> if($id1==$id2){<br />   echo"这两个身份证相同";<br />}else{<br />  echo"这两个身份证不相同";<br /><br />} 
ログイン後にコピー


理論的には
2 つの ID カードは同じではありません

が実際の出力となります。


私の Web 環境と別の同僚の出力は同じです
私の同僚の 2 つの ID カードは異なります

これ 2 つの変数は文字列

として出力されます。PHP の設定に違いはありますか?
------解決策のアイデア----------------------
次に ===
を使用します------解決策のアイデア----------------------
PHP_INT_MAX を出力し、2 つの数値を確認します。 PHP で許可される整数の範囲

比較には === を使用することをお勧めします。
------解決案----------------------
原因が判明したようです
PHP の比較演算子は少し奇妙で間違いやすいです。比較ルールは次のとおりです。

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

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

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

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

実際、同様に、「a」10 の結果も 10 になります。

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

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

1 var_dump('1000000'<'a'); //結果: boolean true
2 var_dump('a'<1) ); //結果: boolean true
3 var_dump(1
は従来の考え方とは少し異なります。 。

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