ホームページ > php教程 > php手册 > PHP 文字列 == 比較の副作用

PHP 文字列 == 比較の副作用

WBOY
リリース: 2016-06-21 08:52:30
オリジナル
1096 人が閲覧しました

$a = '212345678912000005';

$b = '212345678912000001';

var_dump($a == $b);

このコードの出力は bool(true) であり、この判断によって 2 つが等しいと結論付けられることを示します。同様の機能は、in_array() 関数の 3 番目のパラメーターが false であるか設定されていない場合に発生します。文字列 これは数値であるため、long または double (C 言語のデータ型) に変換してから判断します - zendi_smart_strcmp を使用します。ただし、ソース コードのコメントには、ステートメントがオーバーフロー状況を考慮していると記載されています

} else if (dval1 == dval2 && !zend_finite(dval1)) {

/* 両方の値がオーバーフローし、同じ符号を持ちます。

* したがって、数値比較は不正確になります */

goto string_cmp;

}

dval1 と dval2 はそれぞれ double に変換された 2 つの文字列の値ですが、なぜこの判断が正しくないのでしょうか?さらに調べてみましょう。

解決策: 2 つの等号「==」の代わりに 3 つの等号「===」を使用します。in_array() 関数は 3 番目のパラメーターを true に設定します: in_array('val', $array, true)。



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