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

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

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

作成日: 更新日:

基本的な使い方

FILTER_VALIDATE_BOOL定数は、PHPのフィルター機能において、入力値がブール値(真偽値)として有効であるかを検証するために使用される定数です。

この定数は、主にfilter_var()関数などのフィルタリング関連関数と組み合わせて利用されます。Webアプリケーションなどでユーザーからの入力データを受け取る際、チェックボックスの状態や設定値などが「真」または「偽」のどちらであるかを安全に確認したい場合に特に役立ちます。

FILTER_VALIDATE_BOOLを使用すると、PHPは様々な形式の値をブール値として解釈し検証します。具体的には、数値の10、文字列の"true""false""on""off""yes""no"といった値が有効なブール値として認識されます。例えば、入力値が"true""1"であればtrueと評価され、"false""0"であればfalseと評価されます。これらの認識される値は、対応するブール値に変換されて返されます。

もし検証対象の値が、ブール値として認識されない無効な形式であった場合、filter_var()関数はfalseを返します。これにより、開発者は入力データが期待通りの真偽値であるかを容易に判断し、プログラムの誤動作を防ぐことができます。この定数を用いることで、データの整合性を保ち、より堅牢で安全なアプリケーションを構築することが可能になります。

構文(syntax)

1<?php
2$value = "true";
3$isValid = filter_var($value, FILTER_VALIDATE_BOOL);
4?>

引数(parameters)

引数なし

引数はありません

戻り値(return)

戻り値なし

戻り値はありません

サンプルコード

PHP FILTER_VALIDATE_BOOL で真偽値検証する

1<?php
2
3/**
4 * 入力値が真偽値として有効か検証し、その結果を表示します。
5 *
6 * FILTER_VALIDATE_BOOL は、特定の文字列 ('true', '1', 'yes', 'on' など) や
7 * 真偽値、数値の 1 を true として、'false', '0', 'no', 'off', '' (空文字列) や
8 * 真偽値、数値の 0 を false として認識します。
9 * それ以外の値は無効と判断され、NULL を返します (FILTER_NULL_ON_FAILURE オプション使用時)。
10 *
11 * @param mixed $inputValue 検証する任意の入力値。
12 * @return void
13 */
14function validateAsBoolean(mixed $inputValue): void
15{
16    // filter_var関数を使用して、入力値が真偽値として有効か検証します。
17    // FILTER_VALIDATE_BOOL 定数を使用することで、真偽値としての検証を指定します。
18    // FILTER_NULL_ON_FAILURE オプションは、検証に失敗した場合に false ではなく NULL を返すようにします。
19    // これにより、結果が false なのか、検証に失敗したのかを明確に区別できます。
20    $validatedResult = filter_var($inputValue, FILTER_VALIDATE_BOOL, FILTER_NULL_ON_FAILURE);
21
22    echo "入力値: " . (is_string($inputValue) ? "'{$inputValue}'" : var_export($inputValue, true)) . "\n";
23    echo "検証結果: ";
24
25    // 検証結果が NULL の場合は、入力値が真偽値として認識されなかったことを意味します。
26    if (null === $validatedResult) {
27        echo "無効な真偽値です。\n";
28    } else {
29        // 検証が成功した場合は、PHPの真偽値 (true または false) が返されます。
30        echo ($validatedResult ? 'true' : 'false') . " (型: " . gettype($validatedResult) . ")\n";
31    }
32    echo "---------------------------------\n";
33}
34
35// 様々な入力値で関数をテストし、その挙動を確認します。
36validateAsBoolean('true');      // 文字列 'true' は true になる
37validateAsBoolean('false');     // 文字列 'false' は false になる
38validateAsBoolean('1');         // 文字列 '1' は true になる
39validateAsBoolean('0');         // 文字列 '0' は false になる
40validateAsBoolean('yes');       // 文字列 'yes' は true になる
41validateAsBoolean('no');        // 文字列 'no' は false になる
42validateAsBoolean('');          // 空文字列は false になる
43validateAsBoolean(true);        // PHPの true は true になる
44validateAsBoolean(false);       // PHPの false は false になる
45validateAsBoolean(1);           // 数値 1 は true になる
46validateAsBoolean(0);           // 数値 0 は false になる
47validateAsBoolean('hello');     // 'true' などと一致しない文字列は無効
48validateAsBoolean(123);         // 1 や 0 以外の数値は無効
49validateAsBoolean(null);        // null は無効
50validateAsBoolean([]);          // 配列は無効

このPHPコードは、FILTER_VALIDATE_BOOL定数を使って、様々な形式の入力値が「真偽値」として有効かどうかを検証する方法を解説しています。

FILTER_VALIDATE_BOOLは、文字列の'true', '1', 'yes', 'on'や数値の1、PHPのtruetrueとして、また文字列の'false', '0', 'no', 'off', 空文字列や数値の0、PHPのfalsefalseとして認識します。これら以外の値は真偽値として無効と判断されます。

サンプルコードでは、filter_var関数に入力値とFILTER_VALIDATE_BOOL定数を渡して検証しています。さらにFILTER_NULL_ON_FAILUREオプションを組み合わせることで、検証に成功してfalseが返された場合と、検証自体に失敗して真偽値として認識できなかった場合(この場合はNULLが返される)を明確に区別できるようになります。

この機能を使うことで、ウェブフォームからの入力など、ユーザーから多様な形式で渡される値を安全かつ正確にPHPの真偽値(trueまたはfalse)として処理することが可能になります。コードは様々な入力値に対する検証結果を示し、その挙動を具体的に理解できるようになっています。

FILTER_VALIDATE_BOOLは、'true'や'false'といった特定の文字列、または数値の1と0など、真偽値として認められる形式が限定的です。空ではない文字列やゼロではない数値であっても、認識される形式でなければ無効と判断される点にご注意ください。

FILTER_NULL_ON_FAILUREオプションを使用すると、入力値がfalseとして有効だった場合と、値が無効で検証に失敗した場合を明確に区別できます。これは、より堅牢なコードを書く上で重要です。

また、検証に成功した場合の戻り値は、入力値の元の型にかかわらず、常に厳密なPHPの真偽値(bool型)として返されます。

PHP: FILTER_VALIDATE_BOOL による真偽値検証

1<?php
2
3/**
4 * FILTER_VALIDATE_BOOL 定数を使用して真偽値を検証するサンプル関数です。
5 *
6 * この定数は filter_var() 関数などと組み合わせて、入力値が真偽値として
7 * 妥当であるかどうかを検証するために使用されます。
8 *
9 * PHP 8 の推奨コーディングスタイルに従っています。
10 */
11function demonstrateFilterValidateBool(): void
12{
13    echo "--- FILTER_VALIDATE_BOOL の使用例 ---" . PHP_EOL . PHP_EOL;
14
15    // 検証する様々な入力値
16    $testValues = [
17        true,          // PHPの真の真偽値
18        false,         // PHPの偽の真偽値
19        'true',        // 文字列 'true'
20        'false',       // 文字列 'false'
21        'on',          // 文字列 'on'
22        'off',         // 文字列 'off'
23        'yes',         // 文字列 'yes'
24        'no',          // 文字列 'no'
25        '1',           // 文字列 '1'
26        '0',           // 文字列 '0'
27        1,             // 整数 1
28        0,             // 整数 0
29        -1,            // 整数 -1
30        'hello',       // その他の文字列
31        '',            // 空文字列
32        null,          // null値
33    ];
34
35    foreach ($testValues as $value) {
36        // filter_var() 関数と FILTER_VALIDATE_BOOL 定数を使用して値を検証します。
37        // このフィルターは、以下の値を true と判断します:
38        //   true, 'true', 'on', 'yes', 1, '1'
39        // 以下の値を false と判断します:
40        //   false, 'false', 'off', 'no', 0, '0'
41        // 上記以外の値は、デフォルトで false と判断されます。
42        $result = filter_var($value, FILTER_VALIDATE_BOOL);
43
44        // 結果を整形して表示
45        $valueForDisplay = var_export($value, true); // 値を人間が読める形式で表示
46        $resultForDisplay = var_export($result, true); // 結果 (true/false) を表示
47
48        echo "元の値: " . str_pad($valueForDisplay . " (" . gettype($value) . ")", 25) .
49             " | 検証結果: " . $resultForDisplay . PHP_EOL;
50    }
51
52    echo PHP_EOL . "----------------------------------" . PHP_EOL;
53    echo "補足: FILTER_VALIDATE_BOOL は、特定の値のみを true または false と明確に判断し、" . PHP_EOL;
54    echo "      それ以外の値は、デフォルトでは false と評価されます。" . PHP_EOL;
55}
56
57// 関数を実行して、FILTER_VALIDATE_BOOL の動作を確認します。
58demonstrateFilterValidateBool();

PHPのFILTER_VALIDATE_BOOLは、入力値の真偽値を検証する定数です。これはfilter_var()関数と組み合わせて使用し、渡された値が有効な真偽値かを安全に確認できます。定数自体に引数や戻り値はありません。

サンプルコードは、FILTER_VALIDATE_BOOLが様々な入力値をどのように評価するかを示しています。PHPの真偽値true/falseの他、特定の文字列(例: 'true', 'on', 'false', 'off'など)や数値の1/0は、それぞれ真または偽と判断されます。これら以外の値(例: その他の文字列、空文字列、nullなど)は、全てデフォルトで偽(false)として評価される点が重要です。

この定数を活用することで、ユーザー入力などのデータを厳密に真偽値として処理し、予期せぬエラーを防ぐ堅牢なシステム構築に貢献します。特に、ウェブフォームでチェックボックスなど真偽値の入力を扱う際に有用です。

FILTER_VALIDATE_BOOLは、filter_var()関数などと組み合わせて、入力値が真偽値として妥当であるかを検証するための定数です。このフィルターでは、PHPのtrue/false値の他に、特定の文字列(例: 'true', 'on', 'yes', '1')や数値(例: 1)がtrueと判断され、特定の文字列(例: 'false', 'off', 'no', '0')や数値(例: 0)がfalseと判断されます。特に注意すべき点は、これらの定義された値以外のすべての入力値は、デフォルトでfalseとして評価されることです。例えば、空文字列、null値、または「hello」のような他の任意の文字列もfalseと判定されます。この厳格な挙動を理解し、予期しない結果にならないよう正しく利用することが重要です。これにより、意図しない値が真として扱われることを防ぎ、より安全な入力値処理を実現できます。

PHP FILTER_VALIDATE_BOOLでブール値検証する

1<?php
2
3/**
4 * FILTER_VALIDATE_BOOL の使用例を示します。
5 *
6 * この関数は、さまざまな値を PHP の filter_var 関数と
7 * FILTER_VALIDATE_BOOL フラグを使用してブール値として検証する方法を示します。
8 *
9 * FILTER_VALIDATE_BOOL は以下の値をブール値に変換します(大文字小文字を区別しません):
10 * - true, 1, yes, on  => true
11 * - false, 0, no, off => false
12 *
13 * それ以外の値は、FILTER_NULL_ON_FAILURE オプションが指定されている場合、
14 * 検証失敗として null となります。
15 *
16 * @param mixed $value 検証する値。
17 * @return void
18 */
19function demonstrateFilterValidateBool(mixed $value): void
20{
21    // filter_var と FILTER_VALIDATE_BOOL を使用して値をブール値として検証します。
22    // FILTER_NULL_ON_FAILURE を追加することで、検証に失敗した場合に null を返すようにします。
23    // これにより、実際に false と評価された場合と、検証自体が失敗した場合を明確に区別できます。
24    $result = filter_var($value, FILTER_VALIDATE_BOOL, FILTER_NULL_ON_FAILURE);
25
26    echo "元の値: ";
27    // 元の値を読みやすく表示
28    if (is_bool($value)) {
29        echo var_export($value, true);
30    } elseif (is_null($value)) {
31        echo "null";
32    } elseif (is_scalar($value)) { // スカラー型(数値、文字列など)の場合
33        echo (string) $value;
34    } else { // その他の型(配列、オブジェクトなど)の場合
35        echo gettype($value);
36    }
37
38    echo " => 検証結果: ";
39    if (is_null($result)) {
40        echo "null (検証失敗)\n";
41    } elseif ($result === true) {
42        echo "true\n";
43    } else { // $result === false
44        echo "false\n";
45    }
46}
47
48// --- サンプル使用例 ---
49echo "--- FILTER_VALIDATE_BOOL の動作確認 ---\n";
50
51// 正しいブール値の検証
52demonstrateFilterValidateBool(true);
53demonstrateFilterValidateBool(false);
54
55// 数値としてのブール値の検証
56demonstrateFilterValidateBool(1);
57demonstrateFilterValidateBool(0);
58
59// 文字列としてのブール値の検証(大文字小文字を区別しない)
60demonstrateFilterValidateBool("true");
61demonstrateFilterValidateBool("false");
62demonstrateFilterValidateBool("yes");
63demonstrateFilterValidateBool("no");
64demonstrateFilterValidateBool("on");
65demonstrateFilterValidateBool("off");
66demonstrateFilterValidateBool("TRUE"); // 大文字の例
67demonstrateFilterValidateBool("oFf");  // 混在の例
68
69// その他の値(検証失敗として null を返す例)
70demonstrateFilterValidateBool("random string"); // 認識できない文字列
71demonstrateFilterValidateBool(123);             // 0, 1以外の数値
72demonstrateFilterValidateBool([]);              // 空の配列
73demonstrateFilterValidateBool(null);            // null値
74demonstrateFilterValidateBool("");              // 空文字列
75demonstrateFilterValidateBool(3.14);            // 浮動小数点数
76
77?>

PHPの定数FILTER_VALIDATE_BOOLは、filter_var関数と組み合わせて使用し、様々な値をブール値(真偽値)として検証する際に利用されます。この定数を指定すると、filter_var関数は渡された値がブール値として認識できるかを判断します。具体的には、「true」「yes」「on」「1」といった値は大文字小文字を区別せずtrueに変換され、「false」「no」「off」「0」といった値はfalseに変換されます。サンプルコードでは、この検証の挙動を明確に示すために、filter_var関数にFILTER_VALIDATE_BOOLと、検証に失敗した場合にnullを返すFILTER_NULL_ON_FAILUREオプションを渡しています。これにより、値がfalseとして正しく検証された場合と、そもそもブール値として認識できない値であったために検証自体が失敗した場合(結果がnull)とを区別できます。文字列、数値、空の配列など多様な値を検証することで、FILTER_VALIDATE_BOOLがどのような値をブール値とみなし、どのような値を検証失敗と判断するのか、その具体的な動作を確認できます。

FILTER_VALIDATE_BOOLは、PHPの通常の型変換とは異なり、特定の文字列や数値(true, 1, yes, on, false, 0, no, off)のみをブール値に変換します。特に重要なのは、認識できない値に対してはfalseではなくnullを返すようFILTER_NULL_ON_FAILUREオプションを常に併用することです。これにより、値がfalseと明示的に評価されたのか、ブール値として検証自体ができなかったのかを明確に区別できます。例えば、"random string"123、空文字列、nullなどはブール値と認識されず、null(検証失敗)となります。これらの違いに注意して利用してください。

関連コンテンツ