PHP - よく使う関数 - 変数・データ型 - 数字・数値チェック


クラウディア 


1. 概要
2. ctype_digit 数字かどうかを調べる
3. is_numeric 数字または数値形式の文字列か調べる

1. 概要

 本ページでは、値や文字列が数値や数字であるかをチェックする関数についてメモします。

2. ctype_digit 数字かどうかを調べる

 「count」とか、「is_countable」は、どうもオブジェクトの型だったりを調べるようで、いわゆる変数が、カウンタブルかどうかは、こっちの方を使うようです。  なお「is_countable」は、「PHP 7.3」以降でないと実装されないらしいし・・・。

ctype_digit ( string $text ) : bool
 ってことで、文字列が、数字かどうかを調べて、「TRUE」「FALSE」を返してくれますな。  正規表現の関数を使ってもできるのでしょうが、呼び方として、こちらがお手軽。

<?php
$array = [ "123", "", "1a3" ];

for ($i=0; $i<count($array); $i++)
{
	$text = $array[$i];

	if (ctype_digit($text))
	{
		print("[$text] は数字のみです。\n");
	}
	else
	{
		print("[$text] は数字以外を含むか、数字を含みません。\n");
	}
}
?>
 てなソースを書いて、実行すると以下の結果が得られます。

[123] は数字のみです。
[] は数字以外を含むか、数字を含みません。
[1a3] は数字以外を含むか、数字を含みません。

3. is_numeric 数字または数値形式の文字列か調べる

 詳細は、「PHP: is_numeric - Manual」をご参照ください。

is_numeric ( mixed $value ) : bool
 前項の「ctype_digit」と比較して、非常にわかりにくい・・・ですが。

<?php
$array = [ "123", "", "1a3", 1 ];

for ($i=0; $i<count($array); $i++)
{
	$value = $array[$i];

	if (ctype_digit($value))
	{
		print("[$value] は数字のみです。\n");
	}
	else
	{
		print("[$value] は数字以外を含むか、数字を含みません。\n");
	}

    if (is_numeric($value))
    {
		print("[$value] は数字または数値形式の文字列です。\n");
    }
    else
    {
		print("[$value] は数字または数値形式の文字列ではありません。\n");
    }
}
 てなコードを書いて実行すると下記のような結果が得られます。

[123] は数字のみです。
[123] は数字または数値形式の文字列です。
[] は数字以外を含むか、数字を含みません。
[] は数字または数値形式の文字列ではありません。
[1a3] は数字以外を含むか、数字を含みません。
[1a3] は数字または数値形式の文字列ではありません。
[1] は数字以外を含むか、数字を含みません。
[1] は数字または数値形式の文字列です。
 ミソは、最後の2行です。  スカラーとしての文字列でない、1は、「ctype_digit」では「FALSE」であるし、「is_numeric」では「TRUE」となるわけで。  「is_numeric」の場合、型に関係なく、数えられるか数えられないかを返すことになっています。

AbemaTV 無料体験