気軽に読めるPHP入門書・PHPスクリプトが動かないときの原因と対策などを紹介します。

  1. PHP関数
  2. 22 view

is_numeric関数とis_int関数の違い

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)

PHP関数の最近記事

  1. mb_send_mail関数でReturn-Pathを設定する方法

  2. is_numeric関数とis_int関数の違い

  3. PHPのdate関数の使用例

  4. isset関数とempty関数と「!」の違い

  5. 文字列を分割して配列を作成するexplode関数

関連記事

PAGE TOP