論理型 (boolean)
浮動小数点数
型
PHP Manual

## 整数

integer は、Z = {..., -2, -1, 0, 1, 2, ...}という集合です。

以下も参照ください。

- 任意精度整数 / GMP
- 浮動小数点数
- 任意精度整数 / BCMath

### 構文

整数 (integer) は、10 進数(基数 10)、16 進数 (基数 16)、8 進数 (基数 8) 表記で指定可能です。オプションで、符号(-または+)を前に付けることが可能です。

8 進数表記を使用する場合、数の前に 0 (ゼロ) を付ける必要があります。また、16 進数表記を使用するには、数の前に 0x を付ける必要があります。

例1 整数リテラル

`<?php
$a = 1234; // 10進整数
$a = -123; // 負の数
$a = 0123; // 8進数 (10進数の83と等価)
$a = 0x1A; // 16進数 (10進数の26と等価)
?>`

使用可能な整数リテラルの形式は以下のように定義されています。

    decimal     : [1-9][0-9]*
                | 0

    hexadecimal : 0[xX][0-9a-fA-F]+

    octal       : 0[0-7]+

    integer     : [+-]?decimal
                | [+-]?hexadecimal
                | [+-]?octal

整数のサイズはプラットフォームに依存しますが、 約 20 億 (32 ビット符号付) が一般的な値です。 64 ビットプラットフォームでの通常の最大値は、約 9E18 です。 PHP は符号無し整数をサポートしていません。 整数のサイズは `PHP_INT_SIZE` で決まります。 最大値は、PHP 4.4.0 から PHP 5.0.5 までは `PHP_INT_MAX` でした。

警告

8 進数の整数値として不正な数字（例: 8 または 9）が渡された場合、 数値の残りの部分は無視されます。

例2 おかしな 8 進数

`<?php
var_dump(01090); // 010（8 進数）= 8（10 進数）
?>`

### 整数のオーバーフロー

integer 型の範囲外の数を指定した場合、かわりに float として解釈されます。また、結果が integer 型の範囲外の数となるような計算を行うと float が代わりに返されます。

例3 32 ビットシステムにおける整数のオーバーフロー

`<?php
$large_number = 2147483647;
var_dump($large_number); // int(2147483647)
$large_number = 2147483648;
var_dump($large_number); // float(2147483648)
$million = 1000000;
$large_number = 50000 * $million;
var_dump($large_number); // float(50000000000)
?>`

例4 64 ビットシステムにおける整数のオーバーフロー

`<?php
$large_number = 9223372036854775807;
var_dump($large_number); // int(9223372036854775807)
$large_number = 9223372036854775808;
var_dump($large_number); // float(9.2233720368548E+18)
$million = 1000000;
$large_number = 50000000000000 * $million;
var_dump($large_number); // float(5.0E+19)
?>`

PHP には整数の割り算はありません。1/2 は float 型の 0.5 になります。 下方向の整数値に値を丸めるためにキャストを使用することができ、 また、round() 関数を使用することもできます。

`<?php
var_dump(25/7); // float(3.5714285714286)
var_dump((int) (25/7)); // int(3)
var_dump(round(25/7)); // float(4)
?>`

### 整数への変換

integer に値を明示的に変換するには、キャスト (int) または (integer) のどちらかを使用してください。しかし、多くの場合、演算子、関数、制御構造が integer 引数を必要とする場合、値は自動的に変換されるため、 キャストを使用する必要はありません。 関数 intval() を用いて値を整数に変換することも可能です。

型の相互変換 を参照ください。

#### booleans から

`FALSE` は、0 (ゼロ) となり、 `TRUE` は、1 となります。

#### 浮動小数点数から

float から整数に変換する場合、その数はゼロのほうに丸められます。

float が整数の範囲 (通常は、32 ビットプラットフォームでは +/- 2.15e+9 = 2^31、64 ビットプラットフォームでは +/- 9.22e+18 = 2^63 ) を越える場合、結果は undefined となります。これは、 その float が正しい整数の結果を得るために十分な精度を得られなかったからです。 この場合、警告も通知も発生しません!

警告

未知の端数を integer にキャストしないでください。 この場合、予期しない結果となることがあります。

`<?php
echo (int) ( (0.1+0.7) * 10 ); // 7が出力されます!
?>`

より詳細な情報については、 float の精度に関する注意を参照ください。

#### 文字列から

文字列変換 を参照ください。

#### 他の型から

警告

整数への変換の動作は、他の型については定義されません。 現在の動作は、その値がまず 論理値に変換された 場合と同じです。しかし、この動作は予告なく変更されることがありえるので、 これを前提にしていはいけません。

論理型 (boolean)
浮動小数点数
型
PHP Manual