入力チェックとかで結構楽が出来るPHPのempty関数ですが結構な罠があります。
emptyの使い勝手の良さ
色々なチェックを同時に行ってくれます。
以下の値を全てtrueで返し、それ以外を全てfalseで返してくれます。
- ""(空文字)
- 0(整数の0)
- 0.0(浮動小数点の0)
- "0"(文字列の0)
- NULL
- false
- array()(空の配列)
これら全てをチェックしてくれるのでとても便利。
emptyの罠
emptyは確かにとても便利な関数です
ですが、便利ですが厳密なチェックは一切行ってくれません。
例えば入力チェックでemptyを使用した場合、入力値に0が入ってる場合、入力はしてるがemptyでのチェックのためfalseが返って来てしまいます。
このように入力されているのにfalseが返って来てしまいます。
PHPの型比較表を見てもらえれば色々と分かるかと思います。
実際のemptyの動きと下部の方に紛らわしい判定を記載しました。
まとめ
僕はこの曖昧な判定を知ってからemptyがバグの原因になりやすいので、プロジェクト内では使用しないようにしました。
emptyを使用する際は十分注意してください。
0 件のコメント :
コメントを投稿