この記事では、Laravelでnullや空文字の判定・判別する際の挙動の違いについて解説します。
違いが分かりづらいため備忘のためにまとめておきます。
同じくLaravelでnulllや空判定を行う際にどうすれば良いか迷っている、違いを知りたい方はぜひこの記事を読んでみてください。
この記事を読むメリット
- Laravelでnullや空文字の判定を行う方法が分かる
- 判定の際に用いるメソッドの違いについて理解できる
わかりにくい変数定義について
まずは判別する変数についてわかりにくいものを4つに絞ってピックアップして紹介したいと思います。
- null
- 空文字
- 0
- 未定義
これらの4つは、このあと紹介する判別方法で微妙に結果が異なります。
まずnullは、変数が定義されているものの、値が設定されていない状態を指します。
続いては空文字は、変数が定義されており、値として空の文字列が設定されている状態を指します。
続いて0は、変数として定義されており、値として数値の0が指定されている状態を指します。
boolean型でfalseの状態の0として認識されます。
最後に未定義とは、そもそも変数自体が定義されていない状態のことを指します。
次の章で、判別方法によってそれぞれどのような結果の違いが出るかを確認していきます。
エンジニアにおすすめ書籍
エンジニアになりたて、これから勉強を深めていきたいという方におすすめの書籍はこちら!
Laravelでnullや空文字の判定を行う方法
ここから実際に判別方法とそれぞれの結果の違いについてまとめます。
まとめると以下のようになります。
判別方法 | null | 空文字 | 0 | 未定義 |
---|---|---|---|---|
if ($var) | false | false | false | undifined error |
is_null($var) | true | false | false | undifined error |
isset($var) | false | true | true | false |
empty($var) | true | true | true | true |
if ($var == “”) | true | true | true | undifined error |
if ($var === “”) | false | true | false | undifined error |
私が業務でよく使ったりみたりするものをまとめてみました。
判別方法によって微妙に結果が異なることが分かると思います。
曖昧な理解なままだと意図しない処理が通ってしまう恐れがあるのでしっかりと違いを理解することが必要かと思います。
特に変数が未定義の場合は注意が必要です。
$varという変数を定義していない場合に、「if ($var)」としてしまうと、「undifined error」が起きてしまいます。
処理自体が止まってしまうので注意しましょう。
判別したい内容によって適切な判別方法を利用できるようになるのがベストだと思います。
違いをはっきりさせてnullや空文字を判別しよう
いかがだったでしょうか。
私はこの違いを理解するのに結構時間がかかりました。
そして実際に沼にハマって悩むまで重要度に気づくまで違いを理解する気になりませんでした。
自分のローカル環境などで実際に変数を作成して今回紹介した判別方法の結果の違いを確かめるとより理解が深まるかと思います。
曖昧にしているといつかバグが起きたり思わぬところでの失敗につながるので押さえておきたいところです。