0

この辺で頭を悩ませているので、質問してみようと思いました..

私はこのコードを持っています:

$x="string";
var_dump($x==0); //says true
var_dump($x==true); //says true
var_dump(true==0); //says false

私が理解していることは次のとおりです。

In 1, `string` gets converted to number, which becomes `0` so condition is true
In 2, `string` is a value, so condition is true
In 3, `true` is not equal to `0` so condition is false

個々にはすべて意味がありますが、順番に並べると意味がありません! PHP の条件演算子がnot transient. 誰かがそれが何を意味するのか、そしてこれをどのように理解するのかを説明できますか?

4

1 に答える 1

0

なぜ世界でそれが意味をなさないのでしょうか?xの値を決して変更しないため、これらのステートメントは「文字列」であるxの元の値に依存します。

最初の var_dump でxが 0 に変更されたと想定していますが、そうではありません。0/false と比較されるだけです。このステートメントは、発生していると思われる変数の変更を実行します。

var_dump(($x = 0) == 0);

または:

var_dump(($x = false) == 0);
于 2013-04-25T14:05:58.570 に答える