Entschuldigung für den schlechten Titel, aber ich weiß nicht, wie ich das nennen soll.
%Vor%Ausgabe:
%Vor%Warnung: rand () erwartet, dass Parameter 2 eine Ganzzahl ist, float gegeben ist in /srv/webroot-sandbox/index.php(73): eval () 'd Code in Zeile 1
Warnung: rand () erwartet, dass Parameter 2 eine Ganzzahl ist, float gegeben ist in /srv/webroot-sandbox/index.php(73): eval () 'd Code in Zeile 2
Warnung: rand () erwartet, dass Parameter 2 eine Ganzzahl ist, float gegeben ist in /srv/webroot-sandbox/index.php(73): eval () 'd Code in Zeile 3
Kann jemand erklären, was vor sich geht? Das ist PHP 7, es funktionierte in PHP 5 gut (zumindest habe ich keine Warnungen erhalten).
PHP-Ints sind signierte 64-Bit-Werte (außer Sie befinden sich in einer 32-Bit-Installation), also gehen sie (grob)
%Vor%In wissenschaftlicher Schreibweise, -9.2e18 - & gt; + 9.2e18
Ihre "schlechten" Werte sind einfach ganze Zahlen, die zu groß sind, um sie als Ganzzahlen zu speichern, und PHP konvertiert in Gleitkommazahlen, um möglichst viele Werte zu erhalten.
Und da Sie 10e18
haben, ist das tatsächlich 1e19
und außerhalb des max_int-Bereichs.
Ihre Frage kann plattformabhängig sein wie der Ganzzahlbereich von a:
-2,147,483,648
bis 2,147,483,647
-9,223,372,036,854,775,808
bis 9,223,372,036,854,775,808
Für mich läuft ein 64-Bit-System das folgende Ergebnis.
%Vor%Diese Ausgabe korreliert direkt mit Ihren Ergebnissen und erklärt möglicherweise eine Geige oder Ihren Webhost, um unterschiedliche Ergebnisse zu zeigen.
Der Grund, warum es sich in PHP 7 anders verhält, ist hier erklärt:
Bisher wurden interne Funktionen stillschweigend Zahlen abgeschnitten erzeugt von Float-zu-Integer-Koerzidenzen, wenn der Float zu groß war als ganze Zahl darstellen. Jetzt wird ein E_WARNING ausgegeben und NULL wird zurückgegeben.
Tags und Links php