php初心者の例に漏れずempty($var)で"0"がfalseになるのを知らず、
バグを埋め込んでしまったのでメモと戒めを残しておこうと思う。
やりたかったこと
変数の空チェック
- 以下の3つだけNGにしたかった
- $var
- $var = "";
- $var = null;
埋め込んだバグ
- 以下の2つもNGになってしまった
- "0"
- 0
修正前
if (empty($var) {
return true; // こっちに入る
} else {
return false;
}
修正後
変数に値が入っているかチェックしたかっただけなのでこうすればOK
// $varが未定義かNULLか空文字ならtrueを返す
if (is_null($var) || $var ==="") {
return true;
} else {
return false;
}