この記事では、Laravelでnullや空文字を判定する際の挙動の違いについて解説します。
違いが分かりづらいため、備忘録としてまとめました。
Laravelでnullや空文字の判定方法に迷っている方や、それぞれの違いを知りたい方はぜひ参考にしてください。
この記事を読むメリット
- Laravelでnullや空文字の判定を行う方法が分かる
- 判定の際に用いるメソッドの違いについて理解できる
わかりにくい変数定義について
まずは、判定時に混同しやすい4つのパターンを紹介します。
- null
- 空文字
- 0
- 未定義
これらの4つは、このあと紹介する判別方法で微妙に結果が異なります。
nullは、変数自体は定義されているものの、値が設定されていない状態を指します。
空文字は、変数が定義されており、値として空の文字列(””)が設定されている状態です。
0は、変数が定義されており、値として数値の0が設定されている状態を指します。
条件判定では、boolean型のfalseとして扱われます。
未定義とは、変数そのものが定義されていない状態を指します。
次の章で、判別方法によってそれぞれどのような結果の違いが出るかを確認していきます。
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や空文字を判別しよう
いかがだったでしょうか。
私自身、この違いを理解するまでにかなり時間がかかりました。
また、実際に問題に直面するまで、その重要性を十分に理解できていませんでした。
自分のローカル環境などで実際に変数を作成して今回紹介した判別方法の結果の違いを確かめるとより理解が深まるかと思います。
曖昧にしているといつかバグが起きたり思わぬところでの失敗につながるので押さえておきたいところです。
コメント