Heim > Artikel > Backend-Entwicklung > Detaillierte Einführung in den erzwungenen Konvertierungsüberlauf langer Ganzzahlen im 32-Bit-PHP-System
CleverCode ist kürzlich auf ein PHP-Projekt-Plastikkonvertierungsproblem gestoßen. mysql hat eine Feld-ID, die Bigint ist und eine lange Ganzzahl enthält, z. B. id = 5147486396. Allerdings wird der PHP-Code aus historischen Gründen auf mehreren Maschinen bereitgestellt, wobei Maschine A ein 32-Bit-System und Maschine B ein 64-Bit-System ist. Das Problem ist nun, dass der Seitenzugriff im 64-Bit-System normal ist. Zugriffsfehler im 32-Bit-System. Der Grund ist ein PHP-Shaping-Überlauf.
# getconf LONG_BIT
<?php $id = 5147486396; echo '$id:'.$id."\r\n"; $value = (int)$id; echo '(int)$id:'.$value."\r\n"; $value = intval($id); echo 'intval($id):'.$value."\r\n"; $value = filter_var($id, FILTER_VALIDATE_INT); echo 'filter_var($id, FILTER_VALIDATE_INT):'."\r\n"; var_dump($value); ?>
(int)5147486396的结果是852519100,intval(5147486396)的结果是852519100,filter_var(5147486396, FILTER_VALIDATE_INT)结果是false。
# getconf LONG_BIT
<?php $id = 5147486396; echo '$id:'.$id."\r\n"; $value = (int)$id; echo '(int)$id:'.$value."\r\n"; $value = intval($id); echo 'intval($id):'.$value."\r\n"; $value = filter_var($id, FILTER_VALIDATE_INT); echo 'filter_var($id, FILTER_VALIDATE_INT):'."\r\n"; var_dump($value); ?>
(int)5147486396的结果是5147486396,intval(5147486396)的结果是5147486396,filter_var(5147486396, FILTER_VALIDATE_INT)结果是5147486396。
Die Wortlänge von Ganzzahlen ist plattformabhängig, obwohl das übliche Maximum bei etwa zwei Milliarden liegt (32-Bit mit Vorzeichen) . Der Maximalwert auf 64-Bit-Plattformen liegt normalerweise bei etwa 9E18. PHP unterstützt keine vorzeichenlosen Ganzzahlen. Integer Die Wortlänge des Werts kann durch die Konstante PHP_INT_SIZE dargestellt werden. Seit PHP 4.4.0 und PHP 5.0.5 kann der Maximalwert durch die Konstante PHP_INT_MAX
Das obige ist der detaillierte Inhalt vonDetaillierte Einführung in den erzwungenen Konvertierungsüberlauf langer Ganzzahlen im 32-Bit-PHP-System. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!