if(NULL ==0){
echo "test". NULL;//output is test
echo "<br>";
echo "test". 0;//output is test0
}
条件がnullと0の両方が等しいと言う場合.しかし、なぜこの結果が得られたのですか?
if(NULL ==0){
echo "test". NULL;//output is test
echo "<br>";
echo "test". 0;//output is test0
}
条件がnullと0の両方が等しいと言う場合.しかし、なぜこの結果が得られたのですか?
ニックがすでに言ったように、この場合、値0
を文字列に追加して、文字列にもします。そのため、 value を取得しますtest0
。
また、 ではif
、厳密な真または偽のステートメントではなく、ゼロ値をチェックしています。
<?php
if( NULL == 0 ) {
echo "test" . NULL;
echo "<br>";
echo "test" . 0;
}
?>
出力:
test
test0
次のようにしてみてください。
<?php
if( NULL === 0 ) {
echo "test" . NULL;
echo "<br>";
echo "test" . 0;
}
?>
if
ステートメントが偽であるため、出力が得られないことがわかります。
PHP の NULL には次のプロパティがあり
ます。NULL == NULL は真、
NULL == FALSE は真です。
そして、リレーショナル モデルに沿って、NULL == TRUE は失敗します
ここでは、PHP で出力が true である NULL と false を比較しています。
0 を数字のゼロ (何もない) と見なすか、文字列 (文字 '0' のように) と見なすかによって異なります。
なぜなら、NULL 文字列は何も表示されないからです。したがって、最初の echo ステートメントは次のように連結します。
"test" . NULL => "test" Then Nothing
0 は論理 NULL ですが、文字列の場合は 0 として出力されます。
NULL
値がありません。比較では False と0
評価され、False としても評価されます (つまり、False == False、つまり True)。これが、ループの本体が実行される理由です。
NULL
明示的に「値なし」を意味します。正確に何であるかについては、ドキュメントを参照してくださいNULL
。
文字列を NOTHING (null) で連結すると、文字列はそのまま残ります。整数 "0" で連結すると、文字列にキャストされ (自動ボクシング)、元の文字列に連結されます...
正常な動作ですか?
そして「null == 0」 -> true、しかし「null === 0」 -> false ...
VALUE (両方の itc で「ゼロ」になります) だけでなく、「===」で TYPE の等価性もチェックする必要があります。