‘false’をキャストするとtrueになる
var_dump((boolean)'false'); // booleanのtrueになる
公式のマニュアルにも記載されている通り、「空文字(と’0′)はfalseになるが、それ以外の文字列はtrueになる」らしい。
boolean への変換 | PHP: 論理型 (boolean) – Manual
boolean に変換する場合、次の値は FALSE とみなされます。
- boolean の FALSE
- integer の 0 および -0 (ゼロ)
- float の 0.0 および -0.0 (ゼロ)
- 空の文字列、 および文字列の “0”
- 要素の数がゼロである 配列
- 特別な値 NULL (値がセットされていない変数を含む)
- 空のタグから作成された SimpleXML オブジェクト
https://www.php.net/manual/ja/language.types.boolean.php#language.types.boolean.casting
文字列の’true’と’false’をきちんとbooleanのtrueとfalseに変換したかったら、自力で何とかするしかない模様。
文字列falseをbooleanのfalseに変換
function toBoolean(string $str) {
return ($str === 'true');
}
// 実行結果
var_dump(toBoolean('true')); // Booleanのtrue
var_dump(toBoolean('false')); // Booleanのfalse