Die meisten Programmiersprachen haben Einschränkungen hinsichtlich der Variablentypen. Das Überschreiten dieser Grenzwerte führt zu Problemen oder Fehlern bei der Ausführung, und PHP bildet da keine Ausnahme. In PHP liegt der Bereich ganzzahliger Variablen zwischen -2147483648 und 2147483647. Wenn dieser Bereich überschritten wird, tritt das Problem der Überschreitung des Ganzzahlbereichs auf.
Es kann viele Gründe geben, warum der Ganzzahlbereich überschritten wird, wie zum Beispiel:
Um das Problem besser zu verstehen, dass PHP den Ganzzahlbereich überschreitet, können wir es anhand des folgenden Beispiels veranschaulichen.
Versuchen wir beispielsweise, die Summe zweier Ganzzahlen so zu berechnen, dass das Ergebnis außerhalb des Bereichs des Ganzzahltyps liegt.
$x = 2147483647;
$y = 2;
echo $x + $y; // Das Ausgabeergebnis ist -2147483647
Da das Ergebnis der Addition von $x und $y den Maximalwert von 2147483647 überschreitet, php Behandeln Sie es als negative Zahl und geben Sie das Ergebnis als -2147483647 aus.
Sie können die Integer-Variable auch manuell auf einen Wert größer als 2147483647 setzen, um das Problem des Integer-Überlaufs zu reproduzieren.
$x = 2147483648;
echo $x; // Das Ausgabeergebnis ist -2147483648
Da 2147483648 größer als der größte ganzzahlige Wert 2147483647 ist, behandelt PHP es als negative Zahl -2147483648.
Beim Lesen von Daten aus anderen Systemen oder Schnittstellen müssen Sie auf das Problem inkonsistenter Datentypen achten.
Lassen Sie uns beispielsweise numerische Daten aus einer JSON-Datei abrufen.
{"number": 12345678901234567890}
$json = file_get_contents("/path/to/json/file.json");
$data = json_decode($json, true);
$number = $data[" number"];
echo $number; // Das Ausgabeergebnis ist 12345678901234567890
Da der maximale ganzzahlige Wert in PHP 2147483647 ist und der aus der JSON-Datei gelesene Wert größer als dieser Wert ist, behandelt PHP ihn als Float. statt einer ganzen Zahl.
Zur Lösung des Problems, dass PHP den Ganzzahlbereich überschreitet, gibt es die folgenden Lösungen:
$ SUM = GMP_ADD ($ x, $ y); Das Ergebnis ist: 2222222211222222211
Speichern Sie Ganzzahlen in der Datenbank, anstatt PHP-Variablen zu verwenden . Der Datenbankspeicher kann größere Ganzzahlwerte aufnehmen.
Ändern Sie die PHP-Konfigurationsdatei. Sie können versuchen, die Konfigurationselemente in der PHP-Konfigurationsdatei php.ini zu ändern, z. B. die Verwendung von 64-Bit-Ganzzahlen festzulegen.
Das obige ist der detaillierte Inhalt vonPHP überschreitet den Shaping-Bereich. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!