Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【PHP8.x】FILTER_VALIDATE_BOOLEAN定数の使い方

FILTER_VALIDATE_BOOLEAN定数の使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

FILTER_VALIDATE_BOOLEAN定数は、入力されたデータを真偽値(boolean)として検証・フィルタリングするための定数です。主にPHPのフィルタリング関数、例えばfilter_var()関数と組み合わせて使用されます。

この定数を使用すると、文字列や数値といった様々な型のデータを、プログラムで扱いやすいtrueまたはfalseの論理値に変換したり、それが有効な真偽値の表現であるかを確認したりできます。具体的には、文字列の"1"、"true"、"on"、"yes"はtrueとして評価されます。一方、"0"、"false"、"off"、"no"、空文字列""falseとして評価されます。これらのリストにない、真偽値として認識できないその他の値が入力された場合も、デフォルトではfalseとして評価されます。

ウェブアプリケーションなどでユーザーからの入力を受け取った際に、チェックボックスのON/OFF状態や、設定値の有効/無効などを安全かつ正確に真偽値として取得したい場合に非常に有用です。例えば、ユーザーが送信したフォームデータが特定の条件を満たすかどうかを判断する際に、この定数を使って入力値をブール値に変換してから処理を進めることができます。

また、このフィルタリング処理に失敗した場合の挙動を制御するために、FILTER_NULL_ON_FAILUREといったオプションを併用することも可能です。これにより、真偽値として認識できない入力があった場合にfalseではなくnullを返すように設定できるため、より柔軟なエラーハンドリングが可能になります。この定数を理解し適切に活用することで、堅牢なシステム構築に役立ちます。

構文(syntax)

1<?php
2$input_value = "true";
3$is_valid_boolean = filter_var($input_value, FILTER_VALIDATE_BOOLEAN);
4?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

サンプルコード

PHP filter_var でブール値検証する

1<?php
2
3/**
4 * 指定された入力値をブール値として検証し、変換します。
5 * FILTER_VALIDATE_BOOLEAN 定数を使用し、多様な文字列や数値形式を
6 * ブール値 (true または false) に変換します。
7 *
8 * - "1", "true", "on", "yes" (大文字小文字を問わない) は true に評価されます。
9 * - "0", "false", "off", "no", "" (空文字列) (大文字小文字を問わない) は false に評価されます。
10 * - 数値の 1 は true、数値の 0 は false に評価されます。
11 *
12 * FILTER_NULL_ON_FAILURE オプションを使用することで、上記のいずれにも該当しない場合に
13 * null を返します。これにより、false と「ブール値として解釈不能」を区別できます。
14 *
15 * @param mixed $input 検証する値。
16 * @return bool|null 検証結果のブール値 (true または false)、
17 *                   またはブール値として解釈できなかった場合は null。
18 */
19function validateBooleanInput(mixed $input): ?bool
20{
21    // filter_var 関数を使って、入力値を FILTER_VALIDATE_BOOLEAN 定数で検証します。
22    // FILTER_NULL_ON_FAILURE オプションにより、ブール値に変換できない場合は null を返します。
23    return filter_var($input, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE);
24}
25
26// -- 使用例 --
27// 様々な入力値を検証し、その結果を表示します。
28
29echo "--- FILTER_VALIDATE_BOOLEAN の使用例 ---" . PHP_EOL . PHP_EOL;
30
31$testCases = [
32    "true",             // 文字列 "true"
33    "FALSE",            // 文字列 "FALSE" (大文字小文字を区別しない)
34    "1",                // 文字列 "1"
35    "0",                // 文字列 "0"
36    "yes",              // 文字列 "yes"
37    "no",               // 文字列 "no"
38    "on",               // 文字列 "on"
39    "off",              // 文字列 "off"
40    "",                 // 空文字列
41    1,                  // 数値の 1
42    0,                  // 数値の 0
43    "not a boolean",    // ブール値として解釈できない文字列
44    null,               // null 値
45    [],                 // 空の配列 (ブール値として解釈できない)
46];
47
48foreach ($testCases as $case) {
49    $result = validateBooleanInput($case);
50    $typeOfResult = gettype($result);
51
52    // 結果を分かりやすく表示するため、null の場合は "null"、
53    // そうでない場合は var_export でブール値を文字列に変換します。
54    $displayResult = is_null($result) ? "null" : var_export($result, true);
55
56    echo "入力値: " . var_export($case, true) . " (元の型: " . gettype($case) . ")" . PHP_EOL;
57    echo "  -> 検証結果: " . $displayResult . " (変換後の型: " . $typeOfResult . ")" . PHP_EOL . PHP_EOL;
58}

PHPのFILTER_VALIDATE_BOOLEAN定数は、さまざまな形式の入力値を論理値(ブール値)として検証し、変換するために使用される特別な値です。主にfilter_var関数と組み合わせて利用されます。

この定数を使うと、「1」や「true」、「yes」、「on」といった文字列、または数値の1はtrueとして評価されます。反対に、「0」や「false」、「no」、「off」、空文字列、または数値の0はfalseとして評価されます。これらの文字列は、大文字小文字を区別せず処理されます。

特に重要なのは、FILTER_NULL_ON_FAILUREオプションを併用することです。このオプションを指定すると、入力値が上記のどのブール値形式にも該当しない場合、検証結果としてnullが返されます。これにより、入力が論理的にfalseであることと、ブール値として解釈できない入力であることを明確に区別できるようになります。

サンプルコードのvalidateBooleanInput関数は、任意の型の値を引数として受け取り、FILTER_VALIDATE_BOOLEAN定数とFILTER_NULL_ON_FAILUREオプションを用いて、その値をブール値(trueまたはfalse)またはnullとして返します。多様な入力値がどのように評価され、どのような型の結果が得られるかを確認することで、システム開発における入力値の安全な論理値変換に役立てることができます。

FILTER_VALIDATE_BOOLEANは、"true"や"1"といった文字列や数値をブール値に変換しますが、"0"や空文字列もfalseとなるため、意図しない変換がないか注意が必要です。

最も重要なのはFILTER_NULL_ON_FAILUREオプションの活用です。これを使わないと、ブール値として解釈できない入力も一律falseと評価されてしまい、本当にfalseだったのか、それとも変換に失敗したのかの区別がつきません。

このオプションにより、変換不能な場合はnullが返るため、安全かつ明確な条件判断が可能となります。特に、Webフォームなどユーザーからの入力値を検証する際に、曖昧さを排除し、プログラムの信頼性を高めるために活用してください。

関連コンテンツ