#はじめに
入力がちゃんとされているかなどの確認の際、php関数を使って型の比較や中身を調べると思います。その際に自分が勘違いしていたものがあったのでメモ程度にまとめておきます。
#実際に勘違いしていた挙動
empty()の結果
qiita.php
<?php
$str = "0";
if (empty($str)) {
echo "空です", PHP_EOL;
} else {
echo "入力あり", PHP_EOL;
}
この場合の出力は空です
になります。というわけでempty()の場合文字列の0もfalseが返ってきます。
ドキュメントを見たところ下記の場合空であるとみなされるようにです。
- "" (空文字列)
- 0 (整数 の 0)
- 0.0 (浮動小数点数の 0)
- "0" (文字列 の 0)
- NULL
- FALSE
- array()
この時の対処としてisset()を使いました。(これが正しいかは?)
#まとめ
phpの場合empty()のほかにis_null()やisset()などが変数の比較に用いられると思うので各々の挙動を知っておくが大切だなと実感。
関数を使わず自分で比較する際にもbooleanの仕様は重要になってくるのでしっかりとドキュメントを見て確認しておきたいですね。
#参考
PHP 型の比較表
http://php.net/manual/ja/types.comparisons.php