Webアプリケーション開発において、ユーザーからの入力値が「数値かどうか」をチェックしたり、金額を見やすく「カンマ区切り」で表示したりする処理は日常的に発生します。
PHPには数値を扱うための便利な関数が豊富に用意されていますが、is_numeric、is_int、ctype_digit など、似たような名前の関数が多く、どれを使えば良いのか迷ってしまうことも少なくありません。
この記事では、PHPにおける数値判定の基本から、number_format を使った表示形式の変更、型変換(キャスト)のベストプラクティスまで、実務で役立つ知識をサンプルコード付きで詳しく解説します。
![]() 執筆者:マヒロ |
|
数値かどうかを判定する is_numeric 関数の基本
PHPで変数が数値、または「数値形式の文字列」であるかを判定する際に最もよく使われるのが is_numeric 関数です。
まずはこの関数の挙動と、他の判定関数との決定的な違いについて理解しましょう。
is_numeric の基本的な使い方
is_numeric 関数は、引数が「数値」または「数値形式の文字列」であれば true を、それ以外なら false を返します。
<?php
$val1 = 123; // 整数
$val2 = 3.14; // 浮動小数点数
$val3 = "100"; // 数値形式の文字列
$val4 = "1,000"; // カンマ付き文字列(数値とはみなされない)
$val5 = "Hello"; // 文字列
var_dump(is_numeric($val1));
var_dump(is_numeric($val2));
var_dump(is_numeric($val3));
var_dump(is_numeric($val4));
var_dump(is_numeric($val5));
?>
実行結果
bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
コードの解説
上記のコードでは、様々な型の値を is_numeric に渡して判定しています。
重要なポイントは、$val3 = "100" のような文字列型であっても、中身が数値として解釈できれば true になるという点です。
これにより、HTMLフォームから送信されたデータ(すべて文字列として受け取られる)が、数値として計算可能かを簡単にチェックすることができます。
一方で、$val4 のようにカンマが含まれる場合や、$val5 のような完全な文字列は false となります。
is_int や ctype_digit との違いと使い分け
「数値判定」と言っても、厳密には判定基準が異なる関数がいくつか存在します。
目的に応じて使い分ける必要があります。
| 関数名 | 判定基準 | “123” (文字列) | 123 (整数) | 3.14 (少数) |
|---|---|---|---|---|
is_numeric |
数値または数値形式の文字列 | true | true | true |
is_int |
厳密な整数型 (integer) のみ | false | true | false |
ctype_digit |
数字のみで構成された文字列 | true | false (※注意) | false |
※ ctype_digit は、PHPのバージョンや引数の型によって挙動が直感的でない場合があるため、使用には注意が必要です(基本的には文字列型に対して使用します)。
もし、「計算に使える値なら何でもOK」という場合は is_numeric を、「プログラム内部で厳密に整数型として扱いたい」場合は is_int を使うのが一般的です。
数値を読みやすく整形する number_format
金額や統計データなど、桁数の多い数値を表示する際は、カンマ区切りや小数点以下の桁数指定を行う必要があります。
PHPでは number_format 関数を使うことで、これらのフォーマットを簡単に行うことができます。
3桁ごとのカンマ区切りを追加する
最も基本的な使い方は、引数に数値を渡すだけです。これだけで、自動的に3桁区切りのカンマが挿入されます。
<?php
$price = 1234567;
// カンマ区切りに変換
$formatted_price = number_format($price);
echo "価格:" . $formatted_price . "円";
?>
実行結果
価格:1,234,567円
コードの解説
number_format($price) を実行することで、整数 1234567 が文字列の "1,234,567" に変換されました。
この関数は、表示用に文字列を生成するためのものです。
計算に使用する前に適用してしまうと、カンマが邪魔をして数値として認識されなくなるため、必ず表示の直前に使用するようにしましょう。
小数点以下の桁数を指定する
number_format の第2引数に数値を指定すると、小数点以下の表示桁数を制御できます。
指定した桁数以降は四捨五入されます。
<?php
$num = 123.45678;
// 小数点第2位まで表示(第3位を四捨五入)
echo number_format($num, 2);
?>
実行結果
123.46
コードの解説
第2引数に 2 を指定したことで、小数点以下が2桁になるように整形されました。
元の値 ...456... の 6 が四捨五入され、末尾が 6 になっています。
消費税計算などで端数処理が必要な場合に非常に便利です。
文字列を数値に変換する(キャストとintval)
is_numeric で数値として扱えるとわかった文字列を、実際に計算可能な「数値型(intやfloat)」に変換したい場合があります。
主な方法は「キャスト(型変換)」と「関数(intvalなど)」の2通りです。
(int) や (float) によるキャスト
変数の前に (型名) を記述することで、その型に強制的に変換できます。これが最も高速で推奨される方法です。
<?php
$str_num = "100";
$str_float = "3.14";
// 整数型へキャスト
$int_val = (int)$str_num;
// 浮動小数点型へキャスト
$float_val = (float)$str_float;
var_dump($int_val);
var_dump($float_val);
// 計算してみる
echo "計算結果:" . ($int_val + 50);
?>
実行結果
int(100)
float(3.14)
計算結果:150
コードの解説
文字列 "100" が整数の 100 に、"3.14" が浮動小数点数の 3.14 に変換されています。
キャストを行うことで、型が明確になり、その後の計算処理での予期せぬエラーを防ぐことができます。
例えば、厳密な比較(===)を行いたい場合などは、事前にキャストしておくことが必須となります。
intval 関数を使う方法
intval 関数を使っても同様に整数化できますが、こちらは「基数(何進数か)」を指定できるという特徴があります。
<?php
$str = "100";
// 通常の変換
echo intval($str) . "\n";
// 2進数として解釈して変換("100" は 4 になる)
echo intval($str, 2);
?>
実行結果
100
4
コードの解説
通常の用途であれば (int) キャストで十分ですが、2進数や16進数などの文字列を10進数の整数に変換したい場合には intval が役立ちます。
なお、floatval という関数もありますが、こちらも (float) キャストと同様の働きをします。
配列が「数値配列」か「連想配列」かを見分ける方法
PHPの配列には、キーが自動的に振られる「インデックス配列(数値配列)」と、キーを自由に指定できる「連想配列」の区別が曖昧な部分があります。
JSON出力時などに、「配列として扱いたいのにオブジェクトになってしまう」といった問題を防ぐために、配列のタイプを判定したいことがあります。
array_is_list 関数(PHP 8.1以降)
最新のPHP環境であれば、array_is_list 関数を使うのが最も確実です。
この関数は、配列のキーが 0 から始まる連番の整数である場合(つまり純粋なリストである場合)に true を返します。
<?php
$list = ["Apple", "Banana", "Orange"]; // 純粋な配列
$assoc = ["id" => 1, "name" => "Apple"]; // 連想配列
// PHP 8.1以降で使用可能
if (function_exists('array_is_list')) {
var_dump(array_is_list($list));
var_dump(array_is_list($assoc));
}
?>
実行結果
bool(true)
bool(false)
コードの解説
$list はキーが 0, 1, 2 と続いているため true となり、$assoc はキーが文字列であるため false となります。
API開発などで、JSONの形式を [] (配列)にするか {} (オブジェクト)にするかを制御したい場合に、この判定が非常に重要になります。
PHPのスキルを活かして年収を上げる方法
以上、PHPのis_numericの使い方やフォーマット処理などについて解説してきました。
なお、PHPのスキルがある場合には、「転職して年収をアップさせる」「副業で稼ぐ」といった方法を検討するのがおすすめです。
PHPエンジニアの需要は非常に高く求人数・案件数も多いため、転職によって数十万円の年収アップはザラで、100万円以上年収が上がることも珍しくありません。
なお、転職によって年収を上げたい場合は、エンジニア専門の転職エージェントサービスを利用するのが最適です。
併せて、副業案件を獲得できるエージェントにも登録しておくと、空いている時間を活かして稼げるようなPHPの案件を探しやすくなります。
転職エージェントも副業エージェントも、登録・利用は完全無料なので、どんな求人や副業案件があるのか気になる方は、気軽に利用してみるとよいでしょう。



