PHP関数のis_numericもis_intも指定値が数値かどうか調べる関数です。「123」や「100」など、整数かどうかのチェックでは同じように使えますが、フォーム入力値の数値チェックなどでは注意が必要です。
is_numericもis_intも整数のチェックには使える
is_numericもis_intも指定値が数値(整数)かどうかチェックするのに使えます。たとえば、次のチェックでは共に「数値です」と表示されます。
<?php
if (is_numeric(100)) {
echo "数値です(is_numeric)"; //出力される
}
if (is_int(100)) {
echo "数値です(is_int)"; //出力される
}
?>
実行結果
数値です(is_numeric)数値です(is_int)
さまざまな処理で整数が求められる場面では同じように使えます。
フォーム入力値の数値チェックにはis_numeric
ただし、フォーム入力値に対して同じような数値チェックを行うと、is_intでは数値と判断されません。
次のようなフォームに「100」と入力してチェックすると、is_numericのみ「数値です」と表示されます。
<?php
header("Content-Type: text/html; charset=UTF-8");
?>
<html>
<head>
<title>フォームデータの数値チェック</title>
</head>
<body>
<?php
if (is_numeric(@$_POST["t1"])) {
echo "数値です(is_numeric)";
}
if (is_int(@$_POST["t1"])) {
echo "数値です(is_int)";
}
?>
<form method="POST" action="">
<table>
<tr>
<td><input type="text" name="t1"></td>
<td><input type="submit" value="送信"></td>
</tr>
</table>
</form>
</body>
</html>
実行結果

これは、フォーム入力値は常に文字列だからです。入力された「100」などの数値は数値文字列になります。入力された内容をそのままチェックする場合は、数値文字列も含めて数値だと判断するis_numeric関数を使います。
is_intは「整数」かどうかのチェックに使う
is_numericもis_intも数値チェックに使えると書きましたが、もう少し正確に違いを説明すると次のようになります。
- is_numeric — 数値(整数・小数など)の場合はtrueを返す
- is_int — 整数の場合はtrueを返す
つまり、is_numeric関数は小数などを含めた数値全体にtrueを返しますが、is_intは整数のみにtrueを返します。
<?php
if (is_numeric(12.34)) {
echo "数値です(is_numeric)"; //出力される
}
if (is_int(12.34)) {
echo "数値です(is_int)";
}
?>
実行結果
数値です(is_numeric)
