PHP string == 比較演算子の副作用_PHP チュートリアル

WBOY
リリース: 2016-07-21 15:43:17
オリジナル
896 人が閲覧しました

コードをコピーします コードは次のとおりです:

$a = '212345678912000005'
$b = '212345678912000001';
var_dump($a == $b);

これの出力コードは bool( true) であり、この判定によって 2 つが等しいと結論付けられることを示します。 in_array() 関数の 3 番目のパラメータが false であるか、設定されていない場合にも同様の機能が発生します。その理由は、文字列が最初に決定されるためです。ただし、ソースコードのコメントには、ステートメントがオーバーフロー状況を考慮していると記載されています。
コードをコピーしてくださいコードは次のとおりです:

} else if (dval1 == dval2 && !zend_finite(dval1)) {
/* 両方の値がオーバーフローしており、同じ符号を持っているため、
* そのため数値比較は不正確になります */
goto string_cmp;



dval1 と dval2 は double 型の後の値に変換されますが、なぜこの判断が正しくないのでしょうか?
解決策は、3 つの等しい値を使用します。 2 つの等号「==」の代わりに「===」を符号付けします。 in_array() 関数は、3 番目のパラメータを true に設定します: in_array('val', $array, true)。

http://www.bkjia.com/PHPjc/320772.htmlwww.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/320772.html技術記事次のようにコードをコピーします: $a = '212345678912000001'; このコードの出力は bool(true) であり、この判断は次のようになります。両方見てください...
🎜
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート