PHPのboolean型の使い方について

採用はこちら

PHPのboolean型は、「真」または「偽」という2つの状態を表すためのデータ型です。

PHPでは truefalse の2つの値を使い、条件分岐、判定処理、フラグ管理、関数の戻り値など、さまざまな場面で利用されます。

たとえば、ユーザーがログインしているかどうかを管理する場合は、次のように記述できます。

$isLoggedIn = true;

ログインしていない場合は、次のようにします。

$isLoggedIn = false;

PHPの型宣言では、boolean型を bool と記述します。

function isActive(): bool
{
    return true;
}

一般的な説明では「boolean型」「ブール型」と呼ばれますが、型宣言では bool を使用します。

目次

PHPでboolean型を使う基本方法

trueとfalseを変数に代入する

boolean型を使う最も基本的な方法は、変数に true または false を代入することです。

$isActive = true;
$isDeleted = false;

値と型を確認したい場合は、var_dump() を使用できます。

var_dump($isActive);
var_dump($isDeleted);

実行結果は次のようになります。

bool(true)
bool(false)

var_dump() を使うと、値だけでなくデータ型も確認できるため、boolean型の動作を確認するときに便利です。

trueとfalseは大文字・小文字を区別しない

PHPでは、truefalse の大文字・小文字は区別されません。

そのため、次の記述はいずれもboolean値として扱われます。

$a = true;
$b = TRUE;
$c = True;

ただし、コードの読みやすさや一般的なコーディング規約を考えると、小文字の truefalse を使用するのがおすすめです。

$isEnabled = true;

if文でboolean型を使う方法

trueの場合に処理を実行する

boolean型は、if 文による条件分岐で頻繁に利用されます。

$isLoggedIn = true;

if ($isLoggedIn) {
    echo "ログインしています";
}

$isLoggedIntrue の場合だけ、if 文の中の処理が実行されます。

falseの場合の処理を書く

else を使えば、条件が false の場合の処理も記述できます。

$isLoggedIn = false;

if ($isLoggedIn) {
    echo "ログインしています";
} else {
    echo "ログインしていません";
}

この場合は $isLoggedInfalse なので、次の内容が表示されます。

ログインしていません

比較演算子の結果はboolean型になる

PHPでは、値を比較した結果も true または false になります。

$age = 20;

$result = $age >= 18;

var_dump($result);

20 >= 18 は正しいため、結果は次のようになります。

bool(true)

主な比較演算子

PHPでよく使用する比較演算子は次のとおりです。

演算子意味
==値が等しい
===値と型が等しい
!=値が等しくない
!==値または型が等しくない
>左辺が右辺より大きい
<左辺が右辺より小さい
>=左辺が右辺以上
<=左辺が右辺以下

たとえば、次の比較結果はいずれもboolean型です。

var_dump(10 > 5);
var_dump(10 === 10);
var_dump(10 === "10");

実行結果は次のようになります。

bool(true)
bool(true)
bool(false)

==と===の違い

==は型変換を伴うことがある

== は、必要に応じて型変換を行いながら値を比較します。

var_dump(10 == "10");

結果は次のようになります。

bool(true)

整数の 10 と文字列の "10" は型が異なりますが、値として等しいため true になります。

===は値と型の両方を比較する

=== は、値だけでなく型まで一致している場合に true になります。

var_dump(10 === "10");

結果は次のとおりです。

bool(false)

整数と文字列で型が異なるため、false になります。

型の違いによる意図しない判定を避けたい場合は、===!== を適切に使用することが重要です。

論理演算子とboolean型

複数の条件を組み合わせる場合は、論理演算子を使用します。

主に使用されるのは &&||! です。

&&でAND条件を作る

&& は、左右の条件が両方とも true の場合に true になります。

$age = 25;
$isMember = true;

if ($age >= 18 && $isMember) {
    echo "利用できます";
}

||でOR条件を作る

|| は、どちらか一方でも true なら true になります。

$isAdmin = false;
$isEditor = true;

if ($isAdmin || $isEditor) {
    echo "編集できます";
}

!でtrueとfalseを反転する

! はboolean値を反転するNOT演算子です。

$isLoggedIn = false;

var_dump(!$isLoggedIn);

実行結果は次のようになります。

bool(true)

false を反転しているため、結果は true です。

PHPでfalseとして扱われる値

PHPでは、boolean型以外の値も条件式の中では true または false として評価されます。

booleanへ変換したときに false になる代表的な値は次のとおりです。

false
0
0.0
-0.0
""
"0"
[]
null

たとえば、整数の 0false として評価されます。

$value = 0;

if ($value) {
    echo "trueです";
} else {
    echo "falseです";
}

実行結果は次のとおりです。

falseです

文字列の”0″もfalseになる

PHPでは、文字列 "0" もbooleanへ変換すると false になります。

var_dump((bool) "0");

結果は次のとおりです。

bool(false)

一方、通常の空でない文字列は true になります。

var_dump((bool) "PHP");
bool(true)

文字列の”false”はtrueになる

特に注意したいのが、文字列 "false" です。

var_dump((bool) "false");

結果は次のようになります。

bool(true)

文字列に「false」と書かれていても、PHPでは空でない通常の文字列として扱われるためです。

つまり、次の2つは異なります。

false
"false"

前者はboolean型の false で、後者は文字列型です。

boolean型へキャストする方法

値を明示的にboolean型へ変換したい場合は、(bool) を使用します。

$value = 1;

$result = (bool) $value;

var_dump($result);

実行結果は次のとおりです。

bool(true)

(boolean) と記述することもできますが、一般的には短い (bool) がよく使われます。

数値をboolean型へ変換する

数値をboolean型に変換すると、00.0-0.0false になります。

それ以外の数値は基本的に true になります。

var_dump((bool) 0);
var_dump((bool) 0.0);
var_dump((bool) -0.0);
var_dump((bool) 1);
var_dump((bool) -1);
var_dump((bool) 100);

実行結果は次のようになります。

bool(false)
bool(false)
bool(false)
bool(true)
bool(true)
bool(true)

文字列をboolean型へ変換する

文字列の変換例は次のとおりです。

var_dump((bool) "");
var_dump((bool) "0");
var_dump((bool) "false");
var_dump((bool) "PHP");

実行結果は次のようになります。

bool(false)
bool(false)
bool(true)
bool(true)

PHPでは、空文字列 "" と文字列 "0"false になる点を覚えておくとよいでしょう。

bool型を関数の引数に指定する

PHPでは、関数の引数に bool 型を指定できます。

function setStatus(bool $enabled): void
{
    if ($enabled) {
        echo "有効です";
    } else {
        echo "無効です";
    }
}

setStatus(true);

型宣言を付けることで、その引数がboolean値を想定していることをコード上で分かりやすくできます。

bool型を関数の戻り値に指定する

関数の戻り値にも bool 型を指定できます。

function isAdult(int $age): bool
{
    return $age >= 18;
}

$result = isAdult(20);

var_dump($result);

実行結果は次のとおりです。

bool(true)

条件を判定する関数では、boolean型を戻り値にするケースが多くあります。

たとえば、次のような関数名です。

isActive()
isValid()
hasPermission()
canEdit()

ishascan などから始まる名前にすると、boolean値を返す関数であることが分かりやすくなります。

strict_typesとbool型の関係

PHPでは、型宣言を指定していても、通常のモードではスカラー値について暗黙的な型変換が行われる場合があります。

より厳格に型を扱いたい場合は、ファイルの先頭で strict_types を有効にできます。

<?php

declare(strict_types=1);

function setActive(bool $active): void
{
    var_dump($active);
}

setActive(true);

strict_typesはすべての型変換を禁止する機能ではない

strict_types=1 を指定すると、PHPのすべての型変換が禁止されるわけではありません。

主に関数やメソッドの呼び出し時などに、スカラー型の暗黙的な型変換を厳格化します。

たとえば、次のコードでは bool 型を要求する関数に整数を渡しています。

<?php

declare(strict_types=1);

function setActive(bool $active): void
{
    var_dump($active);
}

setActive(1);

厳密型が有効な状態では、型が一致しないため TypeError が発生します。

一方、次のような明示的なキャストは問題なく使用できます。

$value = (bool) 1;

strict_types は、明示的な型変換そのものを禁止する機能ではありません。

三項演算子でboolean型を使う

boolean値によって値を切り替えたい場合は、三項演算子を使用できます。

$isMember = true;

$message = $isMember ? "会員です" : "非会員です";

echo $message;

実行結果は次のとおりです。

会員です

単純な条件による値の切り替えでは便利ですが、複雑な処理を三項演算子に詰め込みすぎるとコードが読みにくくなるため注意しましょう。

boolean型をフラグとして使う

boolean型は、プログラム内の状態を表すフラグとしても頻繁に利用されます。

たとえば、商品が販売可能かどうかを管理する場合です。

$isAvailable = true;

if ($isAvailable) {
    echo "購入できます";
} else {
    echo "現在購入できません";
}

ほかにも、次のような用途があります。

$isLoggedIn = true;
$isAdmin = false;
$isPublished = true;
$isDeleted = false;
$hasPermission = true;

boolean型の変数名を ishascan などから始めると、真偽値を表す変数であることが分かりやすくなります。

フォーム入力をboolean型として扱う際の注意点

Webアプリケーションでは、フォームやAPIなどから受け取った値をbooleanとして扱う場合があります。

このとき、単純な (bool) キャストだけでは意図した変換にならないことがあります。

文字列の”false”をキャストするとtrueになる

たとえば、次の値を受け取ったとします。

$value = "false";

これをそのままキャストすると、結果は true です。

var_dump((bool) $value);
bool(true)

そのため、文字列として渡された "true""false" を正しく解釈したい場合は、FILTER_VALIDATE_BOOLEAN を利用できます。

$value = "false";

$result = filter_var(
    $value,
    FILTER_VALIDATE_BOOLEAN,
    FILTER_NULL_ON_FAILURE
);

var_dump($result);

結果は次のようになります。

bool(false)

FILTER_VALIDATE_BOOLEANで扱える代表的な値

FILTER_VALIDATE_BOOLEAN は、代表的な真偽値表現をbooleanとして解釈できます。

たとえば、次のような文字列です。

true
false
yes
no
on
off
1
0

FILTER_NULL_ON_FAILURE を指定すると、有効なboolean表現として解釈できない値に対して null を返せます。

そのため、ユーザー入力や外部データをboolean値として検証する場合に便利です。

boolean型とnullの違い

falsenull は、どちらも条件式では偽として評価されますが、意味と型は異なります。

$enabled = false;
$value = null;

false は「偽」というboolean値です。

一方、null は「値が存在しない」「値が設定されていない」といった状態を表します。

var_dump(false);
var_dump(null);

結果は次のとおりです。

bool(false)
NULL

厳密比較を行うと、両者が異なることが分かります。

var_dump(false === null);
bool(false)

関数の戻り値などで falsenull を区別する必要がある場合は、=== を使った厳密比較が重要です。

boolean型かどうかを判定する方法

値そのものがboolean型かどうかを確認したい場合は、is_bool() を使用します。

$value = true;

if (is_bool($value)) {
    echo "boolean型です";
}

is_bool() 自体の戻り値もboolean型です。

var_dump(is_bool(true));
var_dump(is_bool(false));
var_dump(is_bool(1));

実行結果は次のようになります。

bool(true)
bool(true)
bool(false)

整数の 1 は条件式では true として評価されますが、型そのものは int です。

そのため、is_bool(1)false になります。

boolean型をechoするときの注意点

boolean値をそのまま echo すると、少し分かりにくい表示になります。

echo true;
echo false;

true は文字列として出力すると通常 1 になります。

一方、false は空文字列として出力されるため、画面上では何も表示されません。

boolean値を確認したい場合は、var_dump() を使用するほうが分かりやすいです。

var_dump(true);
var_dump(false);
bool(true)
bool(false)

PHPのboolean型でよくある間違い

falseと”false”を同じものとして扱う

次の2つは異なる値です。

false
"false"

false はboolean型ですが、"false" は文字列型です。

さらに、文字列 "false" をboolean型にキャストすると true になります。

var_dump((bool) "false");
bool(true)

フォームやAPIから文字列を受け取る場合は特に注意が必要です。

0とfalseを厳密比較する

整数の 0 とboolean型の false は、型が異なります。

var_dump(0 === false);

結果は次のとおりです。

bool(false)

一方、緩い比較では次のようになります。

var_dump(0 == false);
bool(true)

値だけでなく型まで区別したい場合は、=== を使用しましょう。

trueと毎回比較する必要はない

次のコードは間違いではありません。

if ($isLoggedIn === true) {
    echo "ログイン済み";
}

ただし、$isLoggedIn が確実にboolean型である場合は、次のように簡潔に記述できます。

if ($isLoggedIn) {
    echo "ログイン済み";
}

否定の場合も同様です。

if (!$isLoggedIn) {
    echo "未ログイン";
}

ただし、false そのものとほかの値を厳密に区別する必要がある場合は、=== false を使用するケースもあります。

PHPのboolean型を使う際のポイント

PHPのboolean型は、truefalse の2つの状態を扱うための基本的なデータ型です。

条件分岐、比較処理、権限判定、ログイン状態、公開状態、フラグ管理など、PHPプログラムのさまざまな場所で利用されます。

特に重要なのは、PHPではboolean型以外の値も条件式の中で真偽値として評価される点です。

00.0、空文字列、文字列 "0"、空配列、null などは false として評価されます。

一方、文字列 "false"true として評価されるため、フォーム入力やAPIから受け取った文字列を扱う場合には注意が必要です。

型まで厳密に比較したい場合は ===!== を使用し、boolean型そのものかを確認したい場合は is_bool() を利用します。

また、関数の引数や戻り値には bool の型宣言を指定できます。

必要に応じて declare(strict_types=1); を組み合わせることで、スカラー型の暗黙的な変換を抑え、より厳格な型管理を行うことも可能です。

PHPのboolean型を正しく理解しておけば、条件分岐や入力チェックをより安全かつ分かりやすく実装できるようになります。

以上、PHPのboolean型の使い方についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次