【PHP】文字列”false”をbooleanにキャストするとtrueになる問題

‘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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です