PHPで整数を判定する5つの方法

PHPで整数を判定する方法の図解 PHP
この記事は約6分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

基本的な知識があればサンプルコードを活用して機能追加、目的を達成できるように作ってあります。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を凌駕する現役のプログラマチームによって監修されています。

サイト内のコードを共有する場合は、参照元として引用して下さいますと幸いです

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

この記事を読めば、PHPで整数を判定する5つの方法をマスターすることができます。

この技術は、プログラミング初心者からベテランまで、幅広いレベルの方々にとって有益なものです。

どんな整数判定方法があるのか、それぞれの使い方は何か、またそれぞれの方法にはどんな注意点があるのかを理解することで、あなたのPHPコーディングスキルは確実にアップします。

●PHPの整数とは

PHPは動的型付け言語であり、変数の型は自動的に決まります。

その中の一つが整数型です。

整数とは、小数点以下の数値がない数値のことを指します。

例えば、1, 20, -3などが整数です。

●整数判定の方法

PHPでは、整数を判定するためのいくつかの方法があります。

それぞれの特性を理解し、適切な場面で使い分けることが大切です。

○サンプルコード1:is_int関数

「is_int」関数は、指定した変数が整数であるかどうかを判断します。

整数であればtrue、そうでなければfalseを返します。

$num = 5;
if (is_int($num)) {
  echo "$num は整数です。";
} else {
  echo "$num は整数ではありません。";
}

上記のコードでは、変数$numに5を代入し、is_int関数でその数値が整数であるかどうかを判定しています。

5は整数であるため、”5は整数です”と表示されます。

○サンプルコード2:is_numeric関数と型キャスト

「is_numeric」関数は、指定した値が数値または数値の文字列であるかを判断します。

その後に型キャストを用いて整数であるかを確認することも可能です。

$num = "5";
if (is_numeric($num) && $num == intval($num)) {
  echo "$num は整数です。";
} else {
  echo "$num は整数ではありません。";
}

このコードでは、まず$numが数値(または数値の文字列)であるかをis_numeric関数で確認し、次にintval関数で$numを整数に型キャストして、$num自体と比較しています。

これにより、数値の文字列が実際に整数であることを確認することができます。

○サンプルコード3:filter_var関数

filter_var関数は、変数のフィルタリングや検証を行うための関数です。

FILTER_VALIDATE_INTフィルタを用いて、変数が整数であるかどうかを確認することができます。

$num = "5";
if (filter_var($num, FILTER_VALIDATE_INT)) {
  echo "$num は整数です。";
} else {
  echo "$num は整数ではありません。";
}

このコードでは、filter_var関数を使用して$numが整数であるかを検証しています。

“5”は整数として有効なため、”5は整数です”と表示されます。

●整数判定の応用例

整数の判定は、実際のアプリケーション開発において、非常に重要な役割を果たします。

ここでは、整数判定を応用した二つの例を紹介します。

○サンプルコード4:入力フォームからのデータ検証

ユーザーからの入力データを検証する際に、そのデータが期待する型(この場合、整数)であるかを確認することは重要です。

POSTデータとして送られてきた年齢が整数であるかどうかを検証する例を紹介します。

$age = $_POST['age'];
if (filter_var($age, FILTER_VALIDATE_INT)) {
  echo "年齢は整数で、その値は $age です。";
} else {
  echo "年齢は整数でなければなりません。";
}

このコードでは、まずPOSTデータから年齢を取得します。

そして、filter_var関数を使用して、年齢が整数であるかどうかを検証します。

整数であればその旨を表示し、そうでなければエラーメッセージを表示します。

○サンプルコード5:データベースからのデータ処理

データベースから取得したデータも、期待する型であることを確認することは必要です。

データベースから取得したidが整数であるかどうかを検証する例を紹介します。

$id = $row['id'];
if (is_numeric($id) && $id == intval($id)) {
  echo "IDは整数で、その値は $id です。";
} else {
  echo "IDは整数でなければなりません。";
}

このコードでは、データベースから取得した行からidを取得し、そのidが整数であるかどうかを検証しています。

具体的には、is_numeric関数とintval関数を使用して、idが数値であり、かつ整数であることを確認しています。

●注意点と対処法

整数判定の際、特に留意すべき点とその対策方法について説明します。

まず、数値が文字列形式である場合、is_int関数では整数とは認識されません。

また、is_numeric関数は数値の文字列も数値と認識しますが、小数や指数表記も含むため、これだけでの整数判定には適さないという点です。

これらの問題を解決するためには、filter_var関数のFILTER_VALIDATE_INTフィルタを活用することがおすすめです。

このフィルタを用いることで、整数として有効な値だけを整数と認識し、その他の値は認識しないという動作を実現できます。

また、特定の範囲内の整数のみを許可したい場合には、filter_var関数に’options’パラメータを設定することで対応可能です。

例えば、1以上100以下の整数だけを許可する場合は次のようにコードを書くことができます。

$age = $_POST['age'];
$options = array(
  'options' => array(
    'min_range' => 1,
    'max_range' => 100,
  ),
);
if (filter_var($age, FILTER_VALIDATE_INT, $options) !== false) {
  echo "年齢は1〜100の整数で、その値は $age です。";
} else {
  echo "年齢は1〜100の整数でなければなりません。";
}

このコードでは、filter_var関数の’options’パラメータに’min_range’と’max_range’を設定しています。

これにより、年齢が1以上100以下の整数であるかを検証します。

まとめ

整数判定はプログラミングにおいて頻繁に遭遇する問題で、正確に判定するためには適切な関数を使用する必要があります。

また、ユーザーからの入力データやデータベースから取得したデータの型を確認することは、バグの原因を排除し、安全なコードを書くために重要です。

この記事で紹介したis_int関数、is_numeric関数、filter_var関数は、それぞれ異なる特性を持っているため、適切な場所で適切な関数を使用することが重要です。

そして、これらの関数を理解し活用することで、より堅牢なコードを実現できます。

これらの情報を活用し、安全で信頼性の高いアプリケーション開発に役立ててください。

最後まで読んでいただき、ありがとうございました。