PHP 速習チュートリアル

PHP の数値

1. PHPの数値(PHP Numbers)

PHPにおける主要な数値型は以下の3つです:

  • Integer(整数)
  • Float(浮動小数点数)
  • Numeric Strings(数値形式の文字列)

さらに、PHPには数値に関連する2つの特別なデータ型があります:

  • Infinity(無限大)
  • NaN(非数値)

数値型のバリアブル(Variable)は、値を代入した瞬間に作成されます。

1.1 使用例

自身のPHPサーバーで試してみましょう:

$a = 5;
$b = 5.34;
$c = "25";

PHPでバリアブルオブジェクト(Object)のデータ型(Data type)を確認するには、var_dump() ファンクション(Function)を使用します。

1.2 データ型の検証例

var_dump($a);
var_dump($b);
var_dump($c);

2. is_int() 関数

is_int() ファンクションは、バリアブルの型が整数(Integer)かどうかをチェックします。
整数とは、2, 256, -256, 10358, -179567 のような小数部分を持たない数値のことです。

2.1 整数型の判定例

$x = 5985;
var_dump(is_int($x));

$y = 59.85;
var_dump(is_int($y));

整数データ型は、32ビットシステムでは -2147483648 から 2147483647 の間、64ビットシステムでは -9223372036854775808 から 9223372036854775807 の間の非小数値です。この制限を超える値は、整数の範囲を超えるため、フロート(Float)として保存されます。

注意:4 * 2.510 ですが、オペランドの1つがフロート(2.5)であるため、結果はフロートとして保存されます。

整数の基本ルール:

  • 少なくとも1つの数字が必要です。
  • 小数点を持ってはいけません。
  • 正の数、または負の数のいずれかになります。
  • 10進数(base 10)、16進数(base 16 - 接頭辞 0x)、8進数(base 8 - 接頭辞 0)、または2進数(base 2 - 接頭辞 0b)の4つの形式で指定できます。

PHPには、整数に関する以下の定義済みコンスタント(Constant)があります:

  • PHP_INT_MAX:サポートされる最大の整数
  • PHP_INT_MIN:サポートされる最小の整数
  • PHP_INT_SIZE:整数のサイズ(バイト単位)

3. is_float() 関数

is_float() ファンクションは、バリアブルの型がフロート(Float)かどうかをチェックします。
フロートは、小数点を持つ数値、または指数形式の数値です(2.0, 256.4, 10.358, 7.64E+5, 5.56E-5 など)。

3.1 フロート型の判定例

$x = 10.365;
var_dump(is_float($x));

フロートデータ型は通常、最大 1.7976931348623E+308(プラットフォーム依存)までの値を保持でき、最大精度は14桁です。

PHPには、フロートに関する以下の定義済みコンスタントがあります(PHP 7.2以降):

  • PHP_FLOAT_MAX:表現可能な最大の浮動小数点数
  • PHP_FLOAT_MIN:表現可能な最小の正の浮動小数点数
  • PHP_FLOAT_DIG:精度を失うことなくフロートに変換し、元に戻せる10進桁数
  • PHP_FLOAT_EPSILONx + 1.0 != 1.0 となる最小の正の数 x

4. PHP Infinity(無限大)

is_finite() ファンクションは、値が有限かどうかをチェックします。値がそのプラットフォーム上のPHPフロートの許容範囲内であれば、有限(finite)とみなされます。
一方、is_infinite() ファンクションは、値が無限かどうかをチェックします。

4.1 無限大の判定例

$x = 1.9e411;
var_dump(is_infinite($x));

5. PHP NAN と is_nan() 関数

NAN は「Not A Number(非数値)」の略です。
NAN は、無効な数学演算の結果として返されます。is_nan() ファンクションは、値が NAN かどうかをチェックするために使用されます。

5.1 使用例

$x = acos(8);
var_dump($x);

// 値が非数値 (NaN) かどうかをチェック
var_dump(is_nan($x));

6. PHPの数値と数値文字列

is_numeric() ファンクションは、バリアブルが数値であるか、あるいは数値形式の文字列であるかをチェックします。
数値または数値文字列であれば true を返し、それ以外の場合は false を返します。

6.1 数値文字列の判定例

$x = 5985;
var_dump(is_numeric($x));

$x = "5985";
var_dump(is_numeric($x));

$x = "59.85" + 100;
var_dump(is_numeric($x));

$x = "Hello";
var_dump(is_numeric($x));

7. 変数の整数値を取得する(intval)

intval() ファンクションは、バリアブル整数(Integer)値を取得するために使用されます。

7.1 使用例

フロートストリング(String)から整数値を取得します:

$x = 23465.768;
echo intval($x);
echo "<br>";

$x = "23465.768";
echo intval($x);