PHP の次のステートメントが true を返すのはなぜですか?
true>=4
たとえば、そのような行はエコーします1
echo true>=4;
誰かがこの背後にあるロジックを説明できますか?
4
もtrue
(非ゼロであるため) であり、true
に等しいtrue
ので、以上でもありますtrue
。
bool または null が文字列以外のものと比較される場合、そのものは bool にキャストされます。ドキュメントを参照してください。
デイビッドの答えに加えて、もう少し深みを与えるために何かを追加することを考えました.
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にするかどうかに関係なく