Scusate per il brutto titolo, ma non so come chiamarlo.Perché php pensa che i grandi int siano float (ma solo qualche volta)?
echo rand(0,10e20) . "\n"; // bad
echo rand(0,10e19) . "\n"; // bad
echo rand(0,10e18) . "\n"; // bad
echo rand(0,10e17) . "\n"; // OK
echo rand(0,10e16) . "\n";
echo rand(0,10e15) . "\n\n";
var_dump(10e20); // float
var_dump(10e15); // float
uscita:
Attenzione: rand() si aspetta parametro 2 sia integer, float proposta in /srv/webroot-sandbox/index.php(73): eval() 'd codice sulla linea 1
Attenzione: rand() si aspetta parametro 2 per essere integer, float proposta in /srv/webroot-sandbox/index.php(73): eval() 'd code on line 2
Avvertenza: rand() si aspetta un parametro 2 da integer, float dato in /srv/webroot-sandbox/index.php(73): eval() 'd code on line 3
578009006101638016
69608699344098568
7596902768127620
float(1.0E+21)
float(1.0E+16)
Qualcuno può spiegare cosa sta succedendo? Questo è PHP 7, ha funzionato bene in PHP 5 (beh, almeno non ho ricevuto alcun avviso).
Ancora in cerca ma POTREBBE essere che superi la dimensione dell'int ... – FirstOne
hmm forse prova a lanciare e fallisce di una certa magnitudine?Ma è buffo che abbia funzionato bene in PHP 5 – MightyPork
secondo il manuale: http://php.net/manual/en/language.types.integer.php Una volta superato il limite, ci si sbaglia. E questo è specifico per PHP7. – durbnpoisn