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

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

作成日: 更新日:

基本的な使い方

is_integer関数は、指定された変数がPHPの整数型(int)であるかどうかを検査し、その結果を返す関数です。この関数は、プログラム内で扱うデータが期待通りの型であるかを厳密に確認したい場合に非常に役立ちます。

具体的には、is_integer関数は検査したい変数一つを引数として受け取ります。そして、その変数の値が整数型(例えば、10-500のような負の数)として格納されていればtrueを返します。一方で、整数型以外のデータ、例えば浮動小数点数(10.03.14など)、文字列("123""hello"など)、論理値(true/false)、配列、オブジェクトなどが渡された場合はfalseを返します。

この関数の主な用途は、データ検証や型チェックです。例えば、ユーザーからの入力値が必ず整数であるべき場所で、意図しない型のデータが混入するのを防ぎ、プログラムの誤動作やセキュリティ上の問題を未然に防ぐことができます。また、特定の計算処理を行う前に、オペランドが確実に整数であることを確認する際にも利用されます。

PHPには、is_int()という関数も存在しますが、これはis_integer()関数の完全に同じ機能を持つ別名(エイリアス)です。どちらを使用しても結果は同じであり、プログラマの好みやコーディングスタイルに合わせて選択できます。is_integer関数は、データ型の整合性を保ち、信頼性の高いプログラムを構築するために不可欠な基本的な関数のひとつと言えます。

構文(syntax)

1<?php
2$value = 123; // 整数型の値
3var_dump(is_integer($value)); // このコードは "bool(true)" と出力します
4?>

引数(parameters)

mixed $value

  • mixed $value: 整数であるかどうかを判定したい値

戻り値(return)

bool

指定された変数が整数型である場合に true を、そうでない場合に false を返します。

サンプルコード

PHP is_integer()で整数型を検査する

1<?php
2
3/**
4 * is_integer() 関数は、指定された変数が整数型であるかどうかを検査します。
5 * PHP 8 で推奨されるコーディングスタイルに従い、様々なデータ型での動作を示します。
6 */
7
8// 実際の整数値の場合
9$intNumber = 42;
10echo "値: " . $intNumber . " (型: " . gettype($intNumber) . ") -> ";
11echo "is_integer(): " . (is_integer($intNumber) ? "はい" : "いいえ") . PHP_EOL;
12
13// 浮動小数点数の場合 (整数ではない)
14$floatNumber = 3.14;
15echo "値: " . $floatNumber . " (型: " . gettype($floatNumber) . ") -> ";
16echo "is_integer(): " . (is_integer($floatNumber) ? "はい" : "いいえ") . PHP_EOL;
17
18// 文字列の場合 (数字のように見えても整数ではない)
19$stringNumber = "123";
20echo "値: '" . $stringNumber . "' (型: " . gettype($stringNumber) . ") -> ";
21echo "is_integer(): " . (is_integer($stringNumber) ? "はい" : "いいえ") . PHP_EOL;
22
23// 真偽値の場合 (整数ではない)
24$booleanValue = true;
25echo "値: " . ($booleanValue ? "true" : "false") . " (型: " . gettype($booleanValue) . ") -> ";
26echo "is_integer(): " . (is_integer($booleanValue) ? "はい" : "いいえ") . PHP_EOL;
27
28// ゼロの場合 (整数である)
29$zeroValue = 0;
30echo "値: " . $zeroValue . " (型: " . gettype($zeroValue) . ") -> ";
31echo "is_integer(): " . (is_integer($zeroValue) ? "はい" : "いいえ") . PHP_EOL;
32
33// Nullの場合 (整数ではない)
34$nullValue = null;
35echo "値: null (型: " . gettype($nullValue) . ") -> ";
36echo "is_integer(): " . (is_integer($nullValue) ? "はい" : "いいえ") . PHP_EOL;
37
38?>

PHPのis_integer()関数は、引数に渡された変数が「整数型(int)」であるかを検査します。引数mixed $valueにはあらゆる型の値を指定でき、変数が整数型であればtrue(真)を、そうでなければfalse(偽)をbool型で返します。

サンプルコードでは、さまざまなデータ型の値に対してis_integer()関数の挙動を示しています。420といった純粋な整数値にはtrueが返されます。しかし、3.14のような浮動小数点数、"123"のような文字列、trueといった真偽値、nullなどの値は、たとえ数値のように見えても、データ型が整数型ではないため、すべてfalseとなります。

これは、is_integer()関数が変数の内容ではなく、その「データ型」が厳密に整数型であるかを判断しているためです。この関数は、プログラム内で変数が間違いなく整数型であることを確認したい場合に役立ちます。

is_integer()関数は、変数がPHPの「整数型(int)」であるかを厳密に検査します。初心者が間違いやすい点として、文字列の数字("123")や浮動小数点数(3.0、3.14)、真偽値(true/false)、nullなどは、見た目が数字でも整数型ではないため、falseを返します。

この関数は、変数のデータ型が本当に整数であるかを確認する際に利用します。もし「数値として扱えるか」を判断したい場合は、is_numeric()関数やfilter_var()関数など、より汎用的な関数を検討してください。is_int()is_integer()のエイリアスであり、同じ働きをします。変数の型を正しく理解し、目的に応じた関数を選ぶことが重要です。

PHPで正の整数かを判定する

1<?php
2
3/**
4 * 指定された値が正の整数であるかをチェックします。
5 *
6 * @param mixed $value チェックする値。
7 * @return bool 値が正の整数であれば true、そうでなければ false を返します。
8 */
9function isPositiveInteger(mixed $value): bool
10{
11    // まず、値が整数型であるかを確認します。
12    if (is_integer($value)) {
13        // 整数型であれば、さらにその値が0より大きい(正である)かを確認します。
14        return $value > 0;
15    }
16    // 整数型でなければ、false を返します。
17    return false;
18}
19
20// サンプルコードの実行例
21
22echo "--- 正の整数のテスト ---" . PHP_EOL;
23$number1 = 10;
24echo "{$number1} は正の整数ですか? " . (isPositiveInteger($number1) ? 'はい' : 'いいえ') . PHP_EOL; // 出力: はい
25
26$number2 = 1;
27echo "{$number2} は正の整数ですか? " . (isPositiveInteger($number2) ? 'はい' : 'いいえ') . PHP_EOL; // 出力: はい
28
29echo PHP_EOL . "--- その他の値のテスト ---" . PHP_EOL;
30$number3 = 0;
31echo "{$number3} は正の整数ですか? " . (isPositiveInteger($number3) ? 'はい' : 'いいえ') . PHP_EOL; // 出力: いいえ
32
33$number4 = -5;
34echo "{$number4} は正の整数ですか? " . (isPositiveInteger($number4) ? 'はい' : 'いいえ') . PHP_EOL; // 出力: いいえ
35
36$floatNumber = 10.5;
37echo "{$floatNumber} は正の整数ですか? " . (isPositiveInteger($floatNumber) ? 'はい' : 'いいえ') . PHP_EOL; // 出力: いいえ
38
39$string = "10";
40echo "文字列 '{$string}' は正の整数ですか? " . (isPositiveInteger($string) ? 'はい' : 'いいえ') . PHP_EOL; // 出力: いいえ
41
42$boolean = true;
43echo (string)$boolean . " は正の整数ですか? " . (isPositiveInteger($boolean) ? 'はい' : 'いいえ') . PHP_EOL; // 出力: いいえ
44
45?>

PHPのis_integer関数は、指定された値が「整数型」であるかどうかを判定するために使われます。この関数はあらゆる型の値(mixed $value)を引数として受け取り、その値が整数型であればtrueを、そうでなければfalseを真偽値(bool)として返します。

サンプルコードでは、このis_integer関数を利用し、「正の整数」であるかをチェックするisPositiveIntegerという独自の関数を定義しています。この関数は、まずis_integer($value)で値が整数型であることを確認します。もし整数型であれば、次にその値が0より大きい(正である)かを判断し、これら二つの条件が両方満たされた場合にのみtrueを返します。それ以外の場合はfalseを返します。

例えば、101は正の整数としてtrueと判定されますが、0-5のような負の整数、10.5のような浮動小数点数、"10"のような文字列、trueのような真偽値は、いずれもfalseと判定されます。このように、is_integer関数は、入力値が特定のデータ型であるかを厳密に確認し、期待する形式のデータだけを処理したい場合に非常に役立つ基本的な関数です。

is_integer関数は、渡された値が厳密に整数型(int)であるかのみを判定します。例えば、文字列の"10"や浮動小数点数10.0は整数型ではないため、falseを返します。

サンプルコードのisPositiveInteger関数は、まずis_integerで値が整数型であることを厳密に確認し、その上で$value > 0という条件で「正の数」であるかを判定しています。これにより、「正の整数」という特定の条件を安全かつ正確に識別できます。

PHPでは柔軟な型変換が行われることがありますが、is_integerのように厳密に型をチェックする関数は、意図しないデータ型によるバグを防ぐために非常に重要です。0や負の整数は「正の整数」ではないため、isPositiveIntegerではfalseと判定される点も理解しておきましょう。

関連コンテンツ

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