クマのブログ

つまづいたところ、学びを書いていきます

【PHP】!emptyの注意点

前提

背景

  • 会社の研修中、PHPの基礎講座を受講

  • 今の会社に就職前に独学でPHPを学習していたが、初めて知ったことがあったので、アウトプット

事象(やりたいこと)

よくあるお問い合わせフォームで

"ID"欄が空であった時、~する

というバリデーションを作るべく

if ( !empty ( $id ) ) {
  エラー時の処理
  }

とした。

困ったこと

このID欄に「0」を入力した場合、"ID"欄が未記入扱いでエラ―が発生

試したこと

1、is_nullを使う

qiita.com

コチラを参考。

今回は記事中テーブルの4行目のパターン。

$val = 0

  • emptyではこれをtrueで返してしまう。これを「!」で否定しているので、

!empty ( $id )

自体がfalseとなり、未記入扱いになってしまう

逆の意味のis_nullを使うことにした。

結果

0を入力しても正常に処理が通った

所感

  • バリデーションに伴う、empty, isset, isset, などの「どれを使うか問題」は直感ではイメージしにくい。

  • 実際に想定される入力をしてみて、想定通りの挙動をするか地道にテストするしかない。