10

PHP の次のステートメントが true を返すのはなぜですか?

true>=4

たとえば、そのような行はエコーします1

echo true>=4;

誰かがこの背後にあるロジックを説明できますか?

4

2 に答える 2

21

4true(非ゼロであるため) であり、trueに等しいtrueので、以上でもありますtrue

bool または null が文字列以外のものと比較される場合、そのものは bool にキャストされます。ドキュメントを参照してください。

于 2012-12-04T21:09:46.020 に答える
20

デイビッドの答えに加えて、もう少し深みを与えるために何かを追加することを考えました.

PHP は他のプログラミング言語とは異なり、演算子や構文に注意しないと、経験したような厄介な穴に陥る可能性があります。

ダビデが言ったように、

4 も真 (ゼロでないため) であり、真は真と等しいため、真以上でもあります。

これを考慮して、 True は False より大きくなります。

真 = 1

偽 = 0

たとえば、次のようにします。

$test = 1;
if ($test == true){
echo "This is true"; 
}else{
echo "This is false";
}

上記は出力されます

これは本当です

しかし、これを取ると:

$test = 1;
if ($test === true){
echo "This is true"; 
}else{
echo "This is false";
}

上記は次のように出力されます。

これは誤りです

追加された等号は、完全一致を探すため、PHP が 1 を true として読み取るのではなく、 integer 1を探します。

これが少し話題から外れていることは承知していますが、PHP に含まれるいくつかのポット ホールについて説明したかっただけです。

これが助けになることを願っています

編集:

あなたの質問に答えて:

エコー true>=4;

出力として 1 が表示される理由は、true/false が数値として解釈されるためです (上記を参照)。

あなたのやっていることecho true>=4、または単にecho true;phpがtrueを1、falseを0にするかどうかに関係なく

于 2012-12-04T21:20:25.247 に答える