質問
まず、PHP のサンプル コードを示します。以下の結果が発生する理由を十分に理解できれば、このブログで時間を無駄にする必要はありません。PHP 初心者が犯しやすい間違いに注意する方法をここに示します。
[php]
var_dump("abcdefg" == "0") // bool(false)
var_dump("abdsafd" == 0); // bool(true)
;
var_dump("abdsafd" == 0); // bool(true)
上記の結果がよくわからない場合は、ブログに従って学習を続けてください。
比較演算子
比較演算子は、その名前が示すように、2 つの値を比較できます。
比較演算子の例 名前 結果
$a == $a が $b に等しい場合、$b は TRUE に等しくなります
$a === $b congruent $a が $b に等しく、それらの型も同じ場合は TRUE
$a != $a が $b に等しくない場合、$b は TRUE に等しくない
$a が $b に等しくない場合、$a <> $b は TRUE に等しくない
$a !== $b は合同ではありません $a が $b と等しくない場合、またはそれらの型が異なる場合は TRUE になります
$a が $b より小さい場合、$a < $b は TRUE より小さいです
$a が $b より大きい場合、$a > $b は TRUE より大きくなります
$a
$a >= $b は、$a が $b 以上の場合に TRUE 以上になります
整数と文字列を比較すると、文字列は整数に変換されます
2 つの数値文字列を比較する場合は、整数として比較します
この時点で、上記の PHP コードについて説明します。var_dump("abcdefg" == "0") は、c の strcmp 関数に対応する 2 つの文字列の比較であるため false である必要があります。ただし、var_dump("abdsafd" == 0) が true の場合は、文字列を整数に変換するルールを学ぶ必要があります
文字列を整数に変換します
文字列が数値コンテキストで使用される場合、結果と型は次のようになります:
文字列に「.」、「e」、または「E」が含まれておらず、数値が整数型の制限 (PHP_INT_MAX で定義) に準拠している場合、文字列は整数とみなされ、浮動小数点とみなされます。他のケース
文字列の開始部分がその値を示します。文字列が有効な数値で始まる場合は、その数値を直接使用できます。それ以外の場合、値は 0 です。有効な値は、記号、それに続く 1 つ以上の数字 (小数点付きの場合もあります)、その後に「e」または「E」などのオプションの指数記号、その後に 1 つまたはさらに多くの桁。
サンプルコード:
[php]
$foo = 1 + "10.5" // $foo は float (11.5) です
;
$foo = 1 + "bob-1.3e3" // $foo は整数 (1) です
$foo = 1 + "bob3" // $foo は整数 (1) です
;
$foo = 1 + "10 匹の小さな豚" // $foo は整数 (11) です
$foo = 4 + "10.2 Little Piggies" // $foo は float (14.2) です
$foo = "10.0 pigs " + 1; $foo は float (11) です
$foo = "10.0 pigs " + 1.0; $foo は float (11) です
?>
;
$foo = 1 + "bob-1.3e3" // $foo は整数 (1) です
$foo = 1 + "bob3" // $foo は整数 (1) です
;
$foo = 1 + "10 匹の小さな豚" // $foo は整数 (11) です
$foo = 4 + "10.2 Little Piggies" // $foo は float (14.2) です
$foo = "10.0 pigs " + 1; $foo は float (11) です
$foo = "10.0 pigs " + 1.0; $foo は float (11) です
;
?>
これは、 var_dump("abcdefg" == 0) が true であることを完全に説明できるはずです。これは、0==0 が true であるため、比較演算子が最初に "abcdefg" を整数 0 に強制するためです