【PHP】emptyの罠


入力チェックとかで結構楽が出来る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 件のコメント :

コメントを投稿