【PHP8.x】is_null関数の使い方

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

作成日: 更新日:

基本的な使い方

is_null関数は、指定された変数の値がNULLであるかどうかを検査する関数です。PHPにおいてNULLは、値が存在しないこと、または未定義であることを表す特別なデータ型であり、唯一の値です。この関数は、引数として渡された変数の値が厳密にNULLと等しい場合に論理値trueを返し、NULL以外の値である場合はfalseを返します。

具体的な利用例としては、データベースからデータが取得できなかった場合や、関数の戻り値が期待する結果ではなくNULLであった場合に、その状態をプログラム内で確認する際に役立ちます。例えば、ユーザーがフォームに入力した値が送信されなかったり、APIからの応答で特定のリソースが見つからなかったりするような状況で、変数がNULLになっているかどうかを判定し、それに応じた処理を行うことができます。

is_null関数を用いることで、変数の初期状態の確認や、意図しないNULL値によるエラーを防ぐための条件分岐を記述することが可能になります。これにより、アプリケーションの堅牢性を高め、予期せぬバグの発生を抑制し、より安定したシステムを構築する上で不可欠な機能の一つです。

構文(syntax)

1<?php
2$value = null;
3var_dump(is_null($value));
4?>

引数(parameters)

mixed $value

  • mixed $value: 値がNULLかどうかを判定する対象の値

戻り値(return)

bool

指定された変数が NULL 値であるかどうかを判定し、結果を真偽値(TRUE または FALSE)で返します。TRUE は NULL の場合に、FALSE は NULL でない場合に返されます。

サンプルコード

PHP: is_null()とempty()の違いを比較する

1<?php
2
3/**
4 * is_null() と empty() の違いを比較する関数
5 *
6 * この関数は、様々なデータ型の変数に対して is_null() と empty() の結果を評価し、
7 * 両者の違いを初心者にも分かりやすく示します。
8 */
9function demonstrateNullAndEmptyComparison(): void
10{
11    // PHPで 'null' と見なされる値
12    $valueNull = null;
13
14    // PHPで '空' と見なされる可能性があるが、'null' ではない値
15    $valueEmptyString = "";
16    $valueZeroInteger = 0;
17    $valueZeroFloat = 0.0;
18    $valueFalseBoolean = false;
19    $valueEmptyArray = [];
20
21    // 'null' でもなく '空' でもない値
22    $valueString = "Hello PHP";
23    $valueInteger = 123;
24    $valueTrueBoolean = true;
25    $valueArray = [1, 2, 3];
26
27    // 未定義の変数は is_null() で警告が出る可能性があるため、ここでは直接扱わない
28    // (empty() は未定義変数に対して警告なしで true を返します)
29
30    // 比較結果を出力するヘルパー関数
31    $compareAndPrint = function (string $label, mixed $value): void {
32        $isNull = is_null($value);
33        $isEmpty = empty($value);
34
35        // 値を分かりやすい文字列形式に変換 (PHP 8 の match 式を使用)
36        $valueStringRepresentation = match (true) {
37            $value === null => 'NULL',
38            is_bool($value) => $value ? 'true' : 'false',
39            is_string($value) => "'" . $value . "'", // 文字列はシングルクォーテーションで囲む
40            is_array($value) => '[' . (empty($value) ? '' : '...') . ']', // 配列は簡潔に表示
41            default => (string)$value, // その他の型は文字列に変換
42        };
43
44        echo sprintf(
45            "%-20s | Value: %-10s | is_null(): %-5s | empty(): %-5s\n",
46            $label,
47            $valueStringRepresentation,
48            $isNull ? 'true' : 'false',
49            $isEmpty ? 'true' : 'false'
50        );
51    };
52
53    echo "--- is_null() と empty() の比較 ---\n";
54    echo "is_null(): 変数が厳密に NULL であるかをチェックします。\n";
55    echo "empty(): 変数が『空』であるかをチェックします (NULL, 0, \"\", false, 空配列など)。\n\n";
56
57    echo "-------------------- | ---------- | ----------- | ---------\n";
58    echo "変数名               | 値         | is_null()   | empty()\n";
59    echo "-------------------- | ---------- | ----------- | ---------\n";
60
61    $compareAndPrint('$valueNull', $valueNull);
62    $compareAndPrint('$valueEmptyString', $valueEmptyString);
63    $compareAndPrint('$valueZeroInteger', $valueZeroInteger);
64    $compareAndPrint('$valueZeroFloat', $valueZeroFloat);
65    $compareAndPrint('$valueFalseBoolean', $valueFalseBoolean);
66    $compareAndPrint('$valueEmptyArray', $valueEmptyArray);
67    $compareAndPrint('$valueString', $valueString);
68    $compareAndPrint('$valueInteger', $valueInteger);
69    $compareAndPrint('$valueTrueBoolean', $valueTrueBoolean);
70    $compareAndPrint('$valueArray', $valueArray);
71
72    echo "-------------------- | ---------- | ----------- | ---------\n";
73    echo "\n結論:\n";
74    echo "・is_null() は、変数の値が NULL であるかのみを判定します。\n";
75    echo "・empty() は、NULL に加えて、空文字列、数値のゼロ、false、空配列など、\n";
76    echo "  多様な『空』と見なされる値を判定します。\n";
77    echo "  用途に応じて適切な関数を使い分けましょう。\n";
78}
79
80// 関数を実行し、比較結果を出力
81demonstrateNullAndEmptyComparison();
82
83?>

PHPのis_null関数は、指定された変数の値が厳密にNULLであるかを判定するものです。引数には任意の型の値(mixed $value)を受け取り、判定結果を真偽値(bool)で返します。値がNULLであればtrueを、それ以外であればfalseを返します。

サンプルコードでは、is_null関数とempty関数の違いを明確に示しています。is_nullは、nullという値そのものに対してのみtrueを返します。例えば、$valueNull = null;に対してはtrueです。

これに対しempty関数は、nullだけでなく、空文字列("")、整数や浮動小数点数の0、論理値のfalse、空配列([])など、PHPが「空」と判断する様々な値に対してtrueを返します。例えば、$valueEmptyString = "";$valueZeroInteger = 0;に対してもtrueとなります。

この違いから、変数が厳密にNULLであることだけを確認したい場合はis_nullを使用し、変数が「空」と見なされる広範な条件(値が設定されていない、または実質的な内容がない)をチェックしたい場合はemptyを使用するというように、用途に応じて適切な関数を選択することが重要です。これにより、意図しない挙動を防ぎ、より堅牢なコードを記述できます。

is_null()は変数が厳密にNULLであるかのみを判定するのに対し、empty()NULLに加えて空文字列""、数値の0、浮動小数点数の0.0、論理値のfalse、空配列[]など、PHPで「空」と見なされる多様な値をtrueと判定します。サンプルコードのように、各関数の挙動の違いを理解することが重要です。特に、未定義の変数に対してis_null()を使用するとPHPから警告が出る可能性がありますが、empty()は警告なしでtrueを返します。そのため、変数が存在するかどうかも含めて「空」かどうかをチェックしたい場合はempty()が便利です。厳密にNULLかを調べたい場合はis_null()を、広範な「空」の状態を調べたい場合はempty()を使い分けることで、意図しないバグを防ぎ、より堅牢なコードを記述できます。

PHPの!is_nullで値を確認する

1<?php
2
3/**
4 * PHPのis_null関数とその否定形 (!is_null) の使用例を示します。
5 * 値がnullではないことを確認し、それに基づいて処理を分岐する方法を解説します。
6 */
7function checkValueIfNotNull(): void
8{
9    // null値の変数
10    $valueIsNull = null;
11    // 文字列型の変数
12    $valueIsString = "Hello PHP";
13    // 整数型の変数
14    $valueIsInt = 123;
15    // 空文字列の変数(これはnullではありません)
16    $valueIsEmptyString = "";
17    // 0の整数(これもnullではありません)
18    $valueIsZero = 0;
19
20    echo "--- !is_null() の結果 ---" . PHP_EOL;
21
22    // $valueIsNull は null なので、!is_null($valueIsNull) は false
23    if (!is_null($valueIsNull)) {
24        echo "null値: null ではありません。(このメッセージは表示されません)" . PHP_EOL;
25    } else {
26        echo "null値: null です。!is_null() は false を返します。" . PHP_EOL;
27    }
28
29    // $valueIsString は null ではないので、!is_null($valueIsString) は true
30    if (!is_null($valueIsString)) {
31        echo "文字列: '{$valueIsString}' は null ではありません。!is_null() は true を返します。" . PHP_EOL;
32    } else {
33        echo "文字列: null です。(このメッセージは表示されません)" . PHP_EOL;
34    }
35
36    // $valueIsInt は null ではないので、!is_null($valueIsInt) は true
37    if (!is_null($valueIsInt)) {
38        echo "整数: {$valueIsInt} は null ではありません。!is_null() は true を返します。" . PHP_EOL;
39    } else {
40        echo "整数: null です。(このメッセージは表示されません)" . PHP_EOL;
41    }
42
43    // $valueIsEmptyString は空文字列であり、null ではないので、!is_null($valueIsEmptyString) は true
44    if (!is_null($valueIsEmptyString)) {
45        echo "空文字列: '{$valueIsEmptyString}' は null ではありません。!is_null() は true を返します。" . PHP_EOL;
46    } else {
47        echo "空文字列: null です。(このメッセージは表示されません)" . PHP_EOL;
48    }
49
50    // $valueIsZero は数値の0であり、null ではないので、!is_null($valueIsZero) は true
51    if (!is_null($valueIsZero)) {
52        echo "数値の0: {$valueIsZero} は null ではありません。!is_null() は true を返します。" . PHP_EOL;
53    } else {
54        echo "数値の0: null です。(このメッセージは表示されません)" . PHP_EOL;
55    }
56
57    echo PHP_EOL . "--- 実践的な利用例 ---" . PHP_EOL;
58
59    // ユーザーからの入力やデータベースからの取得結果など、nullの可能性がある値をチェックする場面
60    $userInput = "ユーザー名"; // 仮の値。nullの場合もあり得る。
61    // $userInput = null; // この行のコメントを外して実行すると、下の else ブロックが実行されます。
62
63    if (!is_null($userInput)) {
64        // $userInput が null ではない場合にのみ、具体的な処理を実行する
65        echo "入力値 '{$userInput}' は有効です。処理を続行します。" . PHP_EOL;
66        // 例: データベースに保存する、次のステップに進むなど
67    } else {
68        // $userInput が null の場合は、エラーメッセージを表示したり、デフォルト値を設定したりする
69        echo "入力値が不足しています。処理を中断します。" . PHP_EOL;
70    }
71}
72
73// 定義した関数を実行します。
74checkValueIfNotNull();
75

PHPのis_null関数は、変数の値が「null(無効な値や未設定の状態)」であるかを正確に判定するために使用されます。この関数は、引数として任意の型mixedの値を受け取り、その値がnullであればtruenullでなければfalseという真偽値boolを戻り値として返します。

サンプルコードでは、is_null関数の前に!(否定演算子)を付けた!is_nullの形で利用されており、これは「値がnullではない」という条件を確認する際に非常に便利です。例えば、$valueIsNull = null;のように明示的にnullが代入された変数に対して!is_null()を実行すると、is_null()trueを返すため、否定によってfalseとなります。

一方、"Hello PHP"のような文字列、123のような整数、""(空文字列)、0(数値のゼロ)などは、見た目は空やゼロに見えてもnullとは異なる具体的な値です。そのため、これらの変数に対して!is_null()を実行すると、すべてtrueを返します。これにより、空文字列や数値のゼロはnullとは区別されることが明確にわかります。

実際のシステム開発では、ユーザー入力やデータベースからの取得結果など、値がnullである可能性がある場面が多々あります。このような場合、!is_null()を使用することで「必要な値が適切に存在するか」を事前に確認し、値が存在する場合にのみ処理を続行する、といった安全な条件分岐を簡単に実装できます。これにより、意図しないエラーを防ぎ、プログラムの堅牢性を高めることができます。

PHPのis_null関数は、変数の値が厳密にnullであるかを確認するものです。サンプルコードの!is_nullは、変数の値がnullではないことを判定するために使用されます。初心者が間違いやすい点として、nullと空文字列("")や数値の0は異なる概念であることを理解することが重要です。これらの値は見た目には「何もない」ように感じられますが、is_null関数で判定するとfalseを返します。つまり、!is_nulltrueを返します。値が厳密にnullである場合のみ特定の処理を避けたい、といったケースで安全に利用できます。変数が定義されているか、または「空ではない」かを総合的に判定したい場合は、isset()empty()のような別の関数も検討してください。

関連コンテンツ

【PHP8.x】is_null関数の使い方 | いっしー@Webエンジニア