Laravel・PHP入門

PHPer初心者

【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には気をつけましょう