ほとんどのプログラミング言語には変数の型に制限があり、これらの制限を超えると実行上の問題やエラーが発生しますが、PHP も例外ではありません。 PHP では、整数変数の範囲は -2147483648 ~ 2147483647 です。この範囲を超えると整数範囲を超える問題が発生します。
整数型の範囲を超えるには、次のようなさまざまな理由が考えられます。
PHP が整数の範囲を超える問題をよりよく理解するために、次の例で説明します。
たとえば、結果が整数型の範囲外になるように 2 つの整数の合計を計算してみます。
$x = 2147483647;
$y = 2;
echo $x $y; // 出力結果は -2147483647
$x と$y 追加された結果は最大値 2147483647 を超えるため、PHP はそれを負の数として扱い、結果を -2147483647 として出力します。
整数変数を 2147483647 より大きい値に手動で設定して、整数オーバーフローの問題を再現することもできます。
$x = 2147483648;
echo $x; //出力結果は -2147483648
2147483648 は最大の整数値 2147483647 より大きいため、PHP はこれを次のように扱います。負の数 -2147483648。
他のシステムまたはインターフェイスからデータを読み取るときは、一貫性のないデータ型の問題に注意する必要があります。
たとえば、json ファイルから数値データを取得してみましょう。
{"数値": 12345678901234567890}
$json = file_get_contents("/path/to/json/file.json");
$data = json_decode($json, true );
$number = $data["number"];
echo $number; //PHP の最大整数値は 2147483647 であるため、出力結果は 12345678901234567890
となります。 json ファイル内の値がこの値より大きい場合、PHP はそれを整数ではなく浮動小数点として扱います。
PHP が整数の範囲を超える問題の解決方法については、次のような解決方法があります。
例:
$x = "12345678901234567890";
$y = "9876543210987654321";
$sum = gmp_add($x, $ y );
echo gmp_strval($sum); // 出力結果は次のとおりです: 22222222112222222211
PHP 開発では、整数の範囲を超えることは無視できない問題であるため、コード作成時やコードレビュー時には、このような問題が発生しないように特別な注意を払う必要があります。
以上がphp が整形範囲を超えていますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。