4

重複の可能性:
等値 (== 二重等号) と同一性 (=== 三重等号) の比較演算子はどのように異なりますか?

なぜこれ

var_dump(0 == "string");

これを出力します

bool(true)

==演算子のコンテキストは、この一連の規則に従って変換0されるはずではFALSEありませんか?"string"TRUE

4

6 に答える 6

13
var_dump(0 == "string");

数値(整数)比較を行っています

0 は整数であるため、「文字列」は整数に変換されて比較され、整数値 0 に等しいため、0 == 0 が true になります。

詳細については、PHP ドキュメントのさまざまなタイプの表との比較を参照してください。

于 2012-12-20T10:55:25.227 に答える
2

ここに示す表は、あなたのケースにより適しています。

TRUEと比較0して示します"php"

比較内では、両方のオペランドをブール値に変換しませんが、一方のオペランドは他方のオペランドの型と一致するように変換されます。あなたの場合、文字列は整数に変換され、別の結果になります0。これにより が0 == 0得られ、true が得られます。

于 2012-12-20T10:56:32.990 に答える
1

これらは同じ型ではありません。同じ型かどうかを確認したい場合は === を使用してください。

于 2012-12-20T10:55:03.613 に答える
1

PHP: ==

数値を文字列と比較する場合、または比較に数値文字列が含まれる場合、各文字列は数値に変換され、数値として比較が実行されます。

"string"は数値形式ではないため、 に変換され0ます。

于 2012-12-20T10:55:32.380 に答える
1

比較中に、文字列は整数に変換されます。

var_dump(0);
var_dump((int)"string");
var_dump(0 == "string");

最後の行は自動的に次のように変換されます:

var_dump(0 == (int)"string");

したがって、この戻り値は次のようになります。

int(0)
int(0)
bool(true)
bool(true)
于 2012-12-20T10:57:55.443 に答える
-1

最初にこのサイトの比較表を探しています: http://php.net/manual/en/language.operators.comparison.php。へのキャストboolはここでは適用されません。

Operand 1           Operand 2
...
string, resource    string, resource    Translate strings and resources to numbers,
or number           or number           usual math

"string"等しいにキャストし0ます。

于 2012-12-20T10:56:31.067 に答える