PHPプログラミングにおいて、最も基本的かつ重要な型の一つが「Boolean(論理型)」です。
条件分岐やループ処理の制御に使われるこの型は、true(真)と false(偽)のたった2つの値しか持ちません。
この記事では、PHPのBoolean型の基本から、間違いやすい型変換(キャスト)のルール、文字列や数値との相互変換、そしてデータベース(MySQL)での扱いまでを徹底的に解説します。
![]() 執筆者:マヒロ |
|
PHPのBoolean(論理型)とは?基本ルール
Boolean(ブーリアン)は、物事の真偽を表すための最もシンプルなデータ型です。
プログラミングにおいては、「はい / いいえ」「成功 / 失敗」「ある / ない」といった二者択一の状態を表現するのによく使われます。
true と false
PHPでは、定数 true と false を使って表現します。
これらは大文字・小文字を区別しません。
つまり、TRUE、True、true はすべて同じ意味になりますが、一般的には小文字で書くことが推奨されています(PSR-12コーディング規約など)。
<?php
$is_admin = true; // 管理者である
$has_error = false; // エラーはない
var_dump($is_admin);
var_dump($has_error);
?>
実行結果は以下の通りです。
bool(true)
bool(false)
変数がBooleanかどうかを判定する is_bool
ある変数が論理型かどうかを厳密にチェックしたい場合は、組み込み関数の is_bool() を使用します。
<?php
$flag = true;
$number = 1;
if (is_bool($flag)) {
echo '$flag はBoolean型です。';
}
if (!is_bool($number)) {
echo '$number はBoolean型ではありません。';
}
?>
実行結果は以下の通りです。
$flag はBoolean型です。
$number はBoolean型ではありません。
Booleanへの自動変換(キャスト)のルール
PHPの最大の特徴であり、同時にハマりやすいポイントが「自動的な型変換」です。
if 文などの条件式の中では、Boolean以外の型(数値や文字列など)も自動的に true か false に評価されます。
どのような値が false とみなされ、それ以外が true になるのか、このルールを正確に把握しておくことが重要です。
falseとみなされる値の一覧
PHPにおいて、以下の値は boolean に変換すると false になります。
- 論理値の
false - 整数の
0 - 浮動小数点数の
0.0および-0.0 - 空の文字列
""、および文字列の"0" - 要素を持たない空の配列
[] - 特別な値
null - 空のタグから作成されたSimpleXMLオブジェクト
これら以外は、すべて true として扱われます。
特に注意すべき変換パターン
以下のサンプルコードで、直感と異なりやすいケースを確認しましょう。
<?php
// 文字列の "false" は true になる!
$str_false = "false";
if ($str_false) {
echo '"false" は true です<br>';
}
// 負の数も true になる!
$negative = -1;
if ($negative) {
echo '-1 は true です<br>';
}
// 文字列の "0" は false だが、"00" は true になる!
$str_zero_zero = "00";
if ($str_zero_zero) {
echo '"00" は true です<br>';
}
?>
実行結果は以下の通りです。
"false" は true です
-1 は true です
"00" は true です
特に注意が必要なのは、文字列の “false” は true と評価される点です。
外部APIから文字列として “false” を受け取った場合、そのままif文に入れると true 扱いになってしまうため、注意が必要です。
Booleanへの明示的な変換(キャスト)
変数の前に (bool) または (boolean) を記述することで、強制的に論理型へ変換できます。
また、boolval() 関数を使っても同様の結果が得られます。
<?php
$val1 = 100;
$val2 = "Hello";
$val3 = 0;
$bool1 = (bool) $val1;
$bool2 = boolval($val2);
$bool3 = (bool) $val3;
var_dump($bool1); // bool(true)
var_dump($bool2); // bool(true)
var_dump($bool3); // bool(false)
?>
値の有無をチェックしてフラグ化したい場合などに便利です。
Booleanから他の型への変換(文字列・数値)
逆に、true や false を文字列や数値として扱おうとした場合、どのように変換されるのでしょうか。
ここもバグを生みやすいポイントです。
Boolean → String(文字列)への変換
ここが最大の落とし穴です。
false を文字列に変換すると、空文字 "" になります。
「”false”」や「”0″」にはなりません。
<?php
$true_val = true;
$false_val = false;
echo "Trueの場合: " . $true_val . "<br>";
echo "Falseの場合: " . $false_val . "<br>"; // 何も表示されない
?>
実行結果は以下の通りです。
Trueの場合: 1
Falseの場合:
true は文字列の "1" になりますが、false は空文字になるため、画面に何も表示されません。
デバッグ時に echo $result; としても何も出ない場合は、値が false である可能性が高いです。
確認には var_dump() や json_encode() を使いましょう。
Boolean → Int(整数)への変換
数値を期待する計算式などでBooleanが使われた場合、以下のように変換されます。
true→ 整数1false→ 整数0
<?php
$flag = true;
$count = 5 + $flag; // 5 + 1
echo $count; // 出力: 6
?>
厳密な比較演算子 === の重要性
Booleanを扱う際は、可能な限り「厳密な比較演算子(===)」を使用することを強くおすすめします。
「緩やかな比較(==)」では、PHPが自動的に型変換を行ってから比較するため、予期せぬ一致が起こる可能性があります。
strpos 関数の例
文字列の中に特定の文字が含まれているかを探す strpos 関数は、見つからなかった場合に false を返しますが、先頭(インデックス0)で見つかった場合は 0 を返します。
<?php
$text = "Apple";
$search = "A";
// 間違いやすい書き方(== や if($pos) で判定)
$pos = strpos($text, $search);
if ($pos == false) {
// 0 == false は true になるため、ここに入ってしまう!
echo "見つかりませんでした(誤判定)";
}
// 正しい書き方(=== で型まで判定)
if ($pos === false) {
echo "見つかりませんでした";
} else {
echo "位置: " . $pos . " で見つかりました";
}
?>
0(先頭で見つかった)と false(見つからなかった)を区別するために、=== は必須です。
データベース(MySQL)とBoolean
Webアプリケーションでよく使われるMySQLには、実は「BOOLEAN型」という独立した型は内部的には存在しません。
MySQLで BOOLEAN または BOOL として定義されたカラムは、TINYINT(1) のエイリアス(別名)として扱われます。
PHPとMySQLでのやり取り
- MySQL側:
trueは1、falseは0として保存されます。 - PHPでの取得時: データベースライブラリ(PDOなど)の設定にもよりますが、多くの場合、数値の
1や0、あるいは文字列の"1"や"0"として取得されます。
そのため、データベースから取得した値をPHPでBooleanとして扱いたい場合は、明示的なキャストや比較が必要になることがあります。
<?php
// データベースから取得した値(例)
$is_published_db = 1; // 実際にはDBから取得
// PHPで扱いやすいように変換
$is_published = (bool) $is_published_db;
if ($is_published) {
echo "公開中";
}
?>
PHPのスキルを活かして年収を上げる方法
以上、PHPのboolean型について詳しく解説してきました。
なお、PHPのスキルがある場合には、「転職して年収をアップさせる」「副業で稼ぐ」といった方法を検討するのがおすすめです。
PHPエンジニアの需要は非常に高く求人数・案件数も多いため、転職によって数十万円の年収アップはザラで、100万円以上年収が上がることも珍しくありません。
なお、転職によって年収を上げたい場合は、エンジニア専門の転職エージェントサービスを利用するのが最適です。
併せて、副業案件を獲得できるエージェントにも登録しておくと、空いている時間を活かして稼げるようなPHPの案件を探しやすくなります。
転職エージェントも副業エージェントも、登録・利用は完全無料なので、どんな求人や副業案件があるのか気になる方は、気軽に利用してみるとよいでしょう。



