数値かどうか調べる(ctype_digitとis_numeric、正規表現)

PHP

PHPの関数で、引数が数値かどうかを調べる方法を紹介しちゃいます。

ctype_digit

ctype_digit( A )

※Aは文字列

引数に指定された文字列Aの全ての文字が数字かどうかを調べ、全ての文字が10進数の整数だったらTRUE、そうでなかったらFALSEを返します。

■ctype_digitを使用した文字列チェックプログラムの例

<?php
  $chk_array = array(3150, 890.29, 'text text', 0xf4c3b00c);
  foreach ($chk_array as $val) {
    if (ctype_digit($val)) {
      echo "{$val}は整数です。";
    } else {
      echo "{$val}は整数ではありません。";
    }
  }
?>

■実行結果

3150は整数です。
890.29は整数ではありません。
text textは整数ではありません。
4106465292は整数です。

※「0xf4c3b00c」は16進数で、10進数だと「4106465292」となります。

便利な「ctype_digit」関数ですが、なんと・・・落とし穴があります。
下記の例を見てください・・・!

ctype_digit('3');    // TRUEを返却
ctype_digit(3);      // FALSEを返却
ctype_digit('3.3');  // FALSEを返却

引数が文字列型じゃないと、想定している結果が返ってきませんね。。
「ctype_digit」関数はあくまでも文字列を調べる関数なので、
引数はクォート「' '」して調べましょう。

変数が数値かどうかを判定するには、is_numeric関数を使います。

is_numeric

is_numeric( A )

※Aは数値

数値または数値文字列の場合はTRUE、それ以外の場合はFALSEを返します。

■is_numericを使用した数値チェックプログラムの例

<?php
  $chk_array = array(3150, 890.29, 'text text', 0xf4c3b00c);
  foreach ($chk_array as $val) {
    if (is_numeric($val)) {
      echo "{$val}は数値です。";
    } else {
      echo "{$val}は数値ではありません。";
    }
  }
?>

■実行結果

3150は数値です。
890.29は数値です。
text textは数値ではありません。
4106465292は数値です。

16進表記「0xf4c3b00c」や2進表記「111001」なども数値として認識します。これは変数が整数かどうかを調べる「is_int」も同様で、16進数や2進数を整数値として判定します。

それでは、最後に正規表現を利用した判定方法を紹介します。

■正規表現を利用した10進数の整数値判定

<?php
  $chk_array = array(3150, 890.29, 'text text', 0xf4c3b00c);
  foreach ($chk_array as $key => $val) {
    if (preg_match("/^[0-9]+$/", $val)) {
      echo "{$val}は整数です。";
    } else {
      echo "{$val}は整数ではありません。";
    }
  }
?>

3150は整数です。
890.29は整数ではありません。
text textは整数ではありません。
4106465292は整数です。

ややこししいですね。。

プロから直接学べるプログラミングスクールの紹介!PHPコースあり!

自己流でプログラミングを覚えようとすると、環境設定でつまづく、書いたプログラムがなぜ動かないか解決できず、多大な時間を浪費してしまいがちです。

担当の指導者(メンター)が付いてくれるTechAcademyなら、分からないことをどんどん質問して解決できます!コードレビューしてもらえるのも素晴らしい点ですね。

【TechAcademy】家で学べるプログラミングスクール

Web制作会社が立ち上げたWebデザイナー育成スクール Web塾超現場主義

Web制作に実際に携わっている講師陣が、現場で通用するスキルを伝授します!卒業後は転職支援、仕事紹介などを行っており、フリーランス独立する道を探すこともできそうです。

また「独立・開業はちょっと...」という方へは、当社の制作案件をお手伝いして頂く道も開けます。
Facebookアカウントでコメント

※本コメント機能はFacebookによって提供されており、この機能によって生じた損害に対してザ サイベースは一切の責任を負いません。

PHP

ABOUTこの記事を書いた人

とみっち

埼玉でザ サイベースを主催しています。Webクリエイター。フリーランス歴7年。飄々と生きています。これでも育児頑張ってます。長野市出身。 @tomicci 詳しいプロフィール【興味】ギター/DTM/Web/車/田舎/旅/酒/育児 自然の音からデスメタルまで聴きます。【運営サイト】 ザ サイベース おと風景