【Laravel/PHP】NULLや空文字列の判定まとめ
業務でNULL判定よく使うのでまとめ。
# 判定表
Laravel内で使っているときは
定義されていることが前提の条件文でエラーをはく。
Laravel5.5 + PHP7.1
未定義 | NULL | 0 | 空 | |
---|---|---|---|---|
if($a) | error | false | false | false |
if($a == NULL) | error | true | true | true |
if($a === NULL) | error | true | false | false |
if($a == 0) | error | true | true | true |
if($a === 0) | error | false | true | false |
if($a == "") | error | true | true | true |
if($a === "") | error | false | false | true |
is_null($a) | error | true | false | false |
isset($a) | false | false | true | true |
empty($a) | true | true | true | true |
例えば
<?php public function is_null() { if($a) { return "aだ"; } return "aではない"; }
これを実行すると、Undefined variable: a
が返る。三項演算子も同様。
その代わり、
<?php public function is_null() { if(isset($a)) { return "aは存在する"; } return "aは存在しない"; }
これを実行しても、"aは存在しない"がかえる。
issetはそもそも定義されているかどうかを判別するメソッドだからだ。
ちなみにLaravelでなく、PHPベタだとレスポンスが変わる
未定義 | NULL | 0 | 空 | |
---|---|---|---|---|
if($a) | false | false | false | false |
if($a == NULL) | true | true | true | true |
if($a === NULL) | true | true | false | false |
if($a == 0) | true | true | true | true |
if($a === 0) | false | false | true | false |
if($a == "") | true | true | true | true |
if($a === "") | false | false | false | true |
is_null($a) | true | true | false | false |
isset($a) | false | false | true | true |
empty($a) | true | true | true | true |
undefinedには気をつけましょう