PHP の int最大値
PHP の int型の最大値は32bit環境では2147483647、64bit環境では9223372036854775808となります。
プログラム言語によりますが int型で宣言されているものが int型の桁数を超えた場合にオーバーフローが発生します。
でも、PHPは動的型付け言語のためint型の最大値を超えた場合は自動的に float型になります。
確認環境
PHP Version:8.0.1
通常の動作
|
|
実行結果
int(2147483647)
float(2147483648)
実行すると自動的に float型に切り替わってしまいます。
ですがPHPでもオーバーフローが発生する場合があるのです。
ちなみにPHP_INT_MAXはその環境での int型最大値を取得してくれます。
オーバーフロー
オーバーフローするパターンです。
配列キー
配列の数値キーが int型最大値を超えた場合、オーバーフローします。
|
|
実行結果
array(2) {
[2147483647]=> string(3) "MAX"
[-2147483648]=> string(9) "OVER FLOW"
}
結果は上記の通りになってしまいます。
なので配列の数値キーを使う場合はお気をつけ下さい。
intval関数
intval関数を使用した際に、int型の最大値を超えた float型の値を、強制的に int型にするため発生します。
PHP: intval - Manual
|
|
実行結果
int(2147483647)
int(-2147483648)
結果はオーバーフローしてしまいます。
強制的に int型にした時にオーバーフローが発生してしまいます。
注意
パターンによってはオーバーフローも発生することがあるのでご注意ください。