【PHP8.x】is_numeric関数の使い方
is_numeric関数の使い方について、初心者にもわかりやすく解説します。
基本的な使い方
is_numeric関数は、指定された変数が数値であるかどうかを判定する関数です。
この関数は、整数や浮動小数点数といった実際の数値型だけでなく、数値として解釈できる文字列(例えば "123"、"3.14"、"-10"、"1.2e3"、"0x1A" など)も数値として認識します。これにより、さまざまな形式の数値を柔軟に扱えます。
引数に渡された値が数値または数値形式の文字列である場合、この関数は真偽値の「true」を返します。一方、空文字列、アルファベットを含む文字列、配列、オブジェクト、NULLなどの非数値型の値に対しては「false」を返します。
この関数は、主にユーザーからの入力値や外部から取得したデータが期待通りの数値形式であるかを確認するバリデーション処理で利用されます。数値演算を行う前にデータの整合性を確保し、予期せぬエラーを防ぐために非常に役立ちます。
構文(syntax)
1var_dump(is_numeric("123"));
引数(parameters)
mixed $value
- mixed $value: 数値として解釈できる値(整数、浮動小数点数、数値文字列)
戻り値(return)
bool
与えられた値が数値、または数値として解釈できる文字列である場合にtrueを、それ以外の場合にfalseを返します。
サンプルコード
PHP is_numeric()で負の数を判定する
1<?php 2 3/** 4 * PHPのis_numeric()関数の使用例を示す関数。 5 * 6 * この関数は、さまざまなデータ型が数値として認識されるかどうかをテストし、 7 * 特にキーワードである「マイナス」に関連する負の数(整数、浮動小数点数、文字列形式)が 8 * どのようにis_numeric()関数によって扱われるかを実演します。 9 */ 10function demonstrateIsNumericUsage(): void 11{ 12 echo "--- PHP is_numeric() 関数のデモンストレーション ---" . PHP_EOL; 13 echo "is_numeric() 関数は、変数が数値、または数値形式の文字列であるかを検査します。" . PHP_EOL . PHP_EOL; 14 15 // is_numeric()関数の動作をテストするための値のコレクションです。 16 // 特に「マイナス」のキーワードに関連する負の値を複数含めています。 17 $testValues = [ 18 '正の整数 (123)' => 123, 19 '負の整数 (-456)' => -456, // 負の整数も数値として認識されます。 20 '浮動小数点数 (3.14)' => 3.14, 21 '負の浮動小数点数 (-2.718)' => -2.718, // 負の浮動小数点数も数値として認識されます。 22 'ゼロ (0)' => 0, 23 '数値形式の文字列 ("789")' => "789", 24 '負の数値形式の文字列 ("-1011")' => "-1011", // 負の数値形式の文字列も数値として認識されます。 25 '浮動小数点数形式の文字列 ("12.34")' => "12.34", 26 '科学記法文字列 ("1.2e3")' => "1.2e3", // 科学記法で書かれた数値文字列も数値として認識されます。 27 'ゼロから始まる数値形式の文字列 ("0123")' => "0123", // 先頭にゼロがあっても数値として認識されます。 28 '非数値文字列 ("hello")' => "hello", 29 '数値と非数値が混在した文字列 ("123abc")' => "123abc", // 非数値文字が混ざると数値とは認識されません。 30 '空文字列 ("")' => "", // 空文字列は数値とは認識されません。 31 '真偽値 (true)' => true, // trueはis_numeric()では数値とみなされません (falseを返します)。 32 '真偽値 (false)' => false, // falseはis_numeric()では数値とみなされません (falseを返します)。 33 'NULL値 (null)' => null, // NULLは数値とは認識されません。 34 '配列 (例: [1])' => [1], // 配列は数値とは認識されません。 35 ]; 36 37 // 各テスト値に対してis_numeric()関数を適用し、結果を出力します。 38 foreach ($testValues as $description => $value) { 39 $result = is_numeric($value); // is_numeric()関数を実行 40 $type = gettype($value); // 値のデータ型を取得 41 42 // 出力表示のために、値を文字列に変換します。 43 // スカラー値(数値、文字列、真偽値など)でない場合は、var_export()で詳細を表示します。 44 $displayValue = is_scalar($value) ? (string)$value : var_export($value, true); 45 46 echo "値: {$description} (型: {$type}, 実際の値: '{$displayValue}') => is_numeric(): " 47 . ($result ? "true" : "false") . PHP_EOL; 48 } 49 50 echo PHP_EOL . "--- まとめ ---" . PHP_EOL; 51 echo "is_numeric() は、整数、浮動小数点数、およびそれらの数値形式の文字列に対して true を返します。" . PHP_EOL; 52 echo "特に、負の数(例: -456, -2.718, \"-1011\")も正しく数値として判定されることを確認できます。" . PHP_EOL; 53 echo "しかし、真偽値、NULL、空文字列、非数値を含む文字列、配列などは数値とは判定されません。" . PHP_EOL; 54} 55 56// 上記のデモンストレーション関数を実行します。 57demonstrateIsNumericUsage();
PHPのis_numeric()関数は、与えられた変数が数値であるか、または数値形式の文字列であるかを検査するために使用されます。引数$valueには、検査したい任意の型の値を指定します。この関数は、引数が数値として認識されれば真(true)を、認識されなければ偽(false)をブール値で返します。
この関数は、正の整数、負の整数(例:-456)、浮動小数点数、そして負の浮動小数点数(例:-2.718)といった数値型に対してtrueを返します。また、数値形式の文字列(例:"789"、"-1011"、"12.34")や科学記法で書かれた数値文字列(例:"1.2e3")も数値と判断し、trueを返します。特に、キーワードである「マイナス」が示す通り、負の値であっても正確に数値として判定される点が重要です。
一方で、非数値文字を含む文字列(例:"hello"、"123abc")、空文字列("")、真偽値(trueやfalse)、NULL値、そして配列などの複雑なデータ型は数値とは判断されず、falseを返します。これにより、プログラム中でユーザー入力のバリデーションやデータ型のチェックを行う際に、信頼性の高い数値判定を行うことができます。
PHPのis_numeric()関数は、引数が数値または数値形式の文字列である場合にtrueを返します。正の数だけでなく、負の整数や浮動小数点数、さらに負の値を表す文字列(例: "-456", "-10.5", "1.2e3")も数値として正しく判定されますのでご安心ください。ただし、"123abc"のような非数値文字が混ざった文字列、空文字列、true/falseといった真偽値、NULL、配列などは数値と判定されません。厳密に「整数型」や「浮動小数点数型」であることを確認したい場合は、is_int()やis_float()関数を使用し、目的に応じて使い分けることが重要です。ユーザーからの入力を検証する際は、より安全なバリデーション関数も検討することをお勧めします。