2

簡単なテストを書きました:

$test = null;
if ($test == null) print 'is null';
else print 'not null';

これは「is null」と表示されます。問題は、これを次のように変更したことです。

$test = 0;
if ($test == null) print 'is null';
else print 'not null';

それでもnullを出力しますか?なんで?

4

3 に答える 3

3

これは、PHP がを使用するときに緩い比較==を実行するためです。つまり、オペランドの 1 つが同じでない場合、別のオペランドの型に強制変換しようとします。

例えば:

array() == false
null == ''
0 == '0'

値と型を一緒に比較するには、 ===(三重等号演算子) が必要です。

if (null === 0) {
    // this can never happen
}

これは、動的に型付けされた言語を使用する負担になります:)

于 2013-08-23T14:41:55.610 に答える
2

使用is_null機能

is_null($test)

テスト

$test = 0;
if (is_null($test)) print 'is null';
else print 'not null';

// Return not null
于 2013-08-23T14:39:46.703 に答える