0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PHP:数値判定に使う is_numeric() と ctype_digit() の違いを整理してみた

Posted at

はじめに

この記事では、PHPで数値かどうかを判定する is_numeric()ctype_digit() の違いについて、基本的な視点からまとめた備忘録です。

内容に不備などがございましたら、お手数ですが優しくご指摘いただけますと幸いです。

書こうと思ったきっかけ

個人的にPHPのキャッチアップをしたくて、勉強している初学者による備忘録として記録しています。

条件分岐などで使う "数値かどうか?" の判定処理を正しく理解したいと思いました。

また、現時点で自分の中で使い分けがあいまいだったため、自分の言葉でしっかり説明できるようになることをゴールとしています。

内容

PHPには数値判定に使える関数として is_numeric()ctype_digit() の2つがありますが、目的や動作が異なります。

is_numeric() の特徴

  • 判定内容:変数が数字または数値形式の文字列であるかを調べる
var_dump(is_numeric("123"));      // true
var_dump(is_numeric(123));        // true
var_dump(is_numeric("123.45"));   // true
var_dump(is_numeric("-123"));     // true
var_dump(is_numeric("1e10"));     // true
var_dump(is_numeric("abc"));      // false

確認画面

Screenshot 2025-06-02 at 20.42.16.png

想定通りの結果となっていることが確認できました!

参考文献

ctype_digit() の特徴

  • 判定内容:数字かどうかを調べる
var_dump(ctype_digit("123"));     // true
var_dump(ctype_digit("0123"));    // true
var_dump(ctype_digit("123.45"));  // false
var_dump(ctype_digit("-123"));    // false
var_dump(ctype_digit(123));        // false ← int型なので false!

確認画面

Screenshot 2025-06-02 at 20.50.03.png

こちらも想定通りの結果となっていることが確認できました!

学んだこと(使い分けの判断)

  • ユーザー入力が純粋な「整数の文字列」か調べたい場合
    ctype_digit() を使う
    (例:会員ID、郵便番号、年齢など、数字だけで構成されている必要がある場合

  • 「数値っぽいかどうか」広く判定したい場合
    is_numeric() を使う
    (例:フォームから受け取った価格、計算対象の値、マイナスや小数も含む場合

例で比較

$value = "123.45";

var_dump(is_numeric($value));  // true
var_dump(ctype_digit($value)); // false

確認画面

Screenshot 2025-06-02 at 20.56.19.png

まとめ

ここまで読んでいただき、ありがとうございました!

関数名 判定対象 判定内容
is_numeric 数値型 or 数値っぽい文字列 整数・小数・符号付き・指数表記などOK "123", 123.45, "-1", "1e3"
ctype_digit 文字列のみ 「0〜9」だけの文字列(整数のみ) "123", "00123" は OK、123(int)は NG

この2つの違いを理解して使い分けることで、入力チェックやバリデーション処理をより正確に行えると感じました...!

参考にした文献

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?