Tellmewhen string PHP では、数値と文字列の比較が無視されやすく、エラーが発生しやすいです。

WBOY
リリース: 2016-07-29 08:47:09
オリジナル
1448 人が閲覧しました

0 は、数値ではない先頭の文字列 (つまり、数値に変換できない文字) と比較すると true を返します (演算子は ==)。

その理由は、比較するときです。数値と文字列を比較する場合は、まず文字列を数値に変換してから比較してください。文字列を数値に変換できない場合、変換結果は 0 になります。したがって、0 との比較は常に true を返します。

さらに詳細な比較ルール、PHP の複数の種類の比較ルールは、マニュアル/言語リファレンス/演算子/比較演算子で見つけることができます
PHP では、2 つの数値文字列 (数値のみを含む文字列) を比較する場合、数値に直接変換されます。比較のため
次の例: ( 2 つの変数 $a と $b の最後の桁が等しくないことに注意してください)

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


//例 1
< ;?php
$a = '511203199106034578';
$b = '511203199106034579';
echo '等しい'
}
? >


上記のプログラムを実行すると、結果は等しいことがわかりました(私たちが考えている結果ではありません)
$a と $b にそれぞれ文字 a を追加します




コードをコピーします

コードは次のとおりです://例 2

$a = 'a511203199106034578 ';
$b = 'a511203199106034579';
if ($a==$b) {
echo 'equal';
} その他 {
echo 'notEqual'
}
?>


今回の出力は notEqual (正しい結果)
PHP は 2 つの数値文字列を数値型に変換し、2 つの数値が完全に等しいため、例 1 は等しくなります。例

コードをコピーします

コードは次のとおりです: $a = 511203199106034578;

echo $a; / 出力 5.1120319910603E+17、つまり 511203199106030000

echo $b; // 出力 5.1120319910603E+17 は 511203199106030000 です
?>


この予期しない結果を回避するには、次のように型比較演算子 === を使用します。次の例 ($a が $b に等しく、型も同じ場合)


コードをコピーします

コードは次のとおりです:

//例 4 $ a = '511203199106034578'; $b = '511203199106034579';

echo 'equal';

echo 'notEqual';


このようにして、期待される notEqual を取得できます


上記では、tellmewhen 文字列の内容を含め、無視されやすくエラーにつながる、Tellmewhen 文字列の PHP の落とし穴を紹介しました。PHP チュートリアルに興味のある友人に役立つことを願っています。


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