PHPのBoolean(論理)型

PHPでTRUE, FALSEの真偽値を扱うには、Boolean(論理)型を使用します。PHPでは、真偽値の大文字・小文字は区別されないので、true, falseと記述することもできます。

まず、簡単な例として変数を論理型で初期化し、var_dump()で出力してみます。当たり前ですが、TRUEを代入した変数ではtrueが出力され、FALSEを代入した変数ではfalseが出力されます。

PHP

<?php
$bool_00 = TRUE;
var_dump($bool_00); // 出力:bool(true)

$bool_01 = FALSE;
var_dump($bool_01); // 出力:bool(false)
?>

論理型へ明示的にキャストするには、(bool)または(boolean)を使用します。

PHP

<?php
var_dump((bool)0.0); // 出力:bool(false)
var_dump((boolean)1.2); // 出力:bool(true)
var_dump((bool)"a"); // 出力:bool(true)
var_dump((boolean)""); // 出力:bool(false)
var_dump((bool)array('a', 'b')); // 出力:bool(true)
?>

次に論理型にキャストした際、FALSEと判定されるケースを見ておきましょう。基本的に「値がない」「NULL」「0」がFALSEと考えて問題ありませんが、文字列の"0"がFALSEと判定される点は注意が必要です。

PHP

<?php
// booleanのFALSE
var_dump((boolean)FALSE); // 出力:bool(false)
// intの0
var_dump((bool)0); // 出力:bool(false)
// floatの0.0
var_dump((boolean)0.0); // 出力:bool(false)
// 空文字列
var_dump((bool)""); // 出力:bool(false)
// 文字列の"0"
var_dump((boolean)"0"); // 出力:bool(false)
// 要素数が0の配列
var_dump((bool)array()); // 出力:bool(false)
// NULL
var_dump((boolean)NULL); // 出力:bool(false)
// 未定義の変数(E_NOTICE発生)
var_dump((bool)$foo); // 出力:bool(false)
// 空のSimpleXMLオブジェクト
$xml = <<<XML
<?xml version='1.0'?>
<hoge></hoge>
XML;
var_dump((boolean)new SimpleXMLElement($xml)); // 出力:bool(false)
?>