【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であればtrue、nullでなければ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_nullはtrueを返します。値が厳密にnullである場合のみ特定の処理を避けたい、といったケースで安全に利用できます。変数が定義されているか、または「空ではない」かを総合的に判定したい場合は、isset()やempty()のような別の関数も検討してください。