簡単なテストを書きました:
$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を出力しますか?なんで?
簡単なテストを書きました:
$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を出力しますか?なんで?
これは、PHP がを使用するときに緩い比較==
を実行するためです。つまり、オペランドの 1 つが同じでない場合、別のオペランドの型に強制変換しようとします。
例えば:
array() == false
null == ''
0 == '0'
値と型を一緒に比較するには、 ===
(三重等号演算子) が必要です。
if (null === 0) {
// this can never happen
}
これは、動的に型付けされた言語を使用する負担になります:)
使用is_null
機能
is_null($test)
$test = 0;
if (is_null($test)) print 'is null';
else print 'not null';
// Return not null