どうでも良い前書き
3年間Rubyを触り続けてきましたが転職を機にPHPで開発することになりました。
良し悪しではなく、Rubyはfalse
とnil
のみがfalsyな値ですが、PHPでは違うみたい。
Rubyのこのシンプルな判定に慣れているのでPHPでの判定にまだ慣れず、ここにメモしておきます。
PHPでfalsyと評価される値一覧
以下がfalsyらしいです。
でも、文字列の"0.0"
はtrue
みたいです。
値の種類 | 値の例 | 説明 |
---|---|---|
boolean | false |
明示的な偽 |
整数 | 0 |
数値のゼロ |
浮動小数点数 | 0.0 |
浮動小数点のゼロ |
文字列 |
"" , "0"
|
空文字や "0" は falsy |
配列 | [] |
空配列 |
NULL | null |
NULL 値 |
未定義変数 | $undefined |
isset() でチェックが必要 |
空のオブジェクトプロパティ等 | $obj->notExists |
存在しないプロパティなど |
falsyかどうかをチェックする方法
1. if (!$value)
:もっとも基本的な使い方
これはシンプルですね。
ただ、$value
が定義されていなければ、PHPは警告を出すみたいです。
$value = "";
if (!$value) {
echo "falsyです";
}
2. empty() を使う:未定義変数も安全にチェック可能
empty() は未定義変数にも警告を出さずfalse
と評価します。
falsyな値全般を安全に扱いたいならempty()
が楽ですかね。
if (empty($value)) {
echo "falsyまたは未定義です";
}
3. (bool) キャスト
こうすると値をboolに変換してfalseと比較するんですね。
ただ未定義変数の場合警告を出してくるみたいです。
if ((bool)$value === false) {
echo "明示的に falsy です";
}
最後に
なんだか今年はPHP(Laravel)、Dart(Flutter)を頑張る必要がありそうです。
ゆっくりやっていきます。