0
 if(NULL ==0){
             echo "test". NULL;//output is test
             echo "<br>";
             echo "test". 0;//output is test0

             }

条件がnullと0の両方が等しいと言う場合.しかし、なぜこの結果が得られたのですか?

4

8 に答える 8

2

Loose comparison を使用し==ました。厳密な比較 を使用する===と、違いが見つかります。

続きを読む :

type comparison table

NULL in PHP

于 2012-08-23T06:14:26.950 に答える
1

ニックがすでに言ったように、この場合、値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ステートメントが偽であるため、出力が得られないことがわかります。

于 2012-08-23T06:21:54.533 に答える
1

PHP の NULL には次のプロパティがあり
ます。NULL == NULL は真、
NULL == FALSE は真です。
そして、リレーショナル モデルに沿って、NULL == TRUE は失敗します

ここでは、PHP で出力が true である NULL と false を比較しています。

于 2012-08-23T06:15:49.330 に答える
1

0 を数字のゼロ (何もない) と見なすか、文字列 (文字 '0' のように) と見なすかによって異なります。

于 2012-08-23T06:13:56.453 に答える
0

PHP では、任意の値を数値と比較すると、値が Int または Float に型キャストされてから比較が行われます。あなたの場合、NULLは最初にIntに型キャストされ、0が生成され、次に比較されてTRUEになります。PHP の型比較型ジャグリングを確認してください。

于 2012-08-23T06:19:03.613 に答える
0

なぜなら、NULL 文字列は何も表示されないからです。したがって、最初の echo ステートメントは次のように連結します。

"test" . NULL => "test" Then Nothing

0 は論理 NULL ですが、文字列の場合は 0 として出力されます。

于 2012-08-23T06:15:43.837 に答える
0

NULL値がありません。比較では False と0評価され、False としても評価されます (つまり、False == False、つまり True)。これが、ループの本体が実行される理由です。

NULL明示的に「値なし」を意味します。正確に何であるかについては、ドキュメントを参照してくださいNULL

于 2012-08-23T06:14:15.910 に答える
0

文字列を NOTHING (null) で連結すると、文字列はそのまま残ります。整数 "0" で連結すると、文字列にキャストされ (自動ボクシング)、元の文字列に連結されます...

正常な動作ですか?

そして「null == 0」 -> true、しかし「null === 0」 -> false ...

VALUE (両方の itc で「ゼロ」になります) だけでなく、「===」で TYPE の等価性もチェックする必要があります。

于 2012-08-23T06:15:36.247 に答える