- PHP
-
2025-05-15
文字列”false”をbool型として扱いたい場合、単純にキャストしてしまうとfalse
の動作を期待しているのに意図とは反対にtrue
の動作となってしまうことがあるので注意が必要です。
例えば以下のように文字列”false”をbool型にキャストしてみます。
$bool = (bool)"false"; var_dump($bool);
するとどうでしょう。以下のような結果が返ってきます。
bool(true)
“false”をキャストしたのにtrue
となってしまいます。
この原因はキャストだとfalse
とは認識されず、”false”というただの文字列という認識となり空文字ではないという判断になるためです。
公式のマニュアルを見てみてください。
booleanへの変換
- boolean の false
- integer の 0 (ゼロ)
- float の 0.0 および -0.0 (ゼロ)
- 空の文字列 “”、 および文字列の “0”
- 要素の数がゼロである 配列
- unit 型 NULL (値がセットされていない変数を含む)
- bool 型へキャストするように動作がオーバーロードされた内部オブジェクト。 例: 属性がない空要素から作成された SimpleXML オブジェクト。
上記以外は全てtrue
とみなされます。
ではどうすれば良いでしょうか。
続きを読む…»

10 views