Ignorando le librerie speciali che ti permettono di lavorare con numeri molto grandi, qual è il più grande int che puoi memorizzare in PHP?Qual è la dimensione massima per un int in PHP?
risposta
Dal PHP manual:
La dimensione di un numero intero è dipendente dalla piattaforma, anche se un valore massimo di circa due miliardi è il valore usuale (che è 32 bit firmati). PHP non supporta gli interi senza segno. La dimensione intera può essere determinata utilizzando la costante PHP_INT_SIZE e il valore massimo utilizzando la costante PHP_INT_MAX da PHP 4.4.0 e PHP 5.0.5.
Le piattaforme a 64 bit di solito hanno un valore massimo di circa 9E18, tranne su Windows prima di PHP 7, dove era sempre a 32 bit.
Ah giudicata: 2 - 1 (2147483647)
integer overflow
Se PHP incontra un numero oltre i limiti del tipo intero, sarà invece interpretato come un float. Inoltre, un'operazione che risulta in un numero oltre i limiti del tipo intero restituirà invece un valore float.
<?php
$large_number = 2147483647;
var_dump($large_number);
// output: int(2147483647)
$large_number = 2147483648;
var_dump($large_number);
// output: float(2147483648)
Questo è ciò che sarebbe su una piattaforma a 32 bit. Considera anche che molte persone eseguono server su una piattaforma a 64 bit. – thomasrutter
La dimensione di int PHP è platform dependent:
Le dimensioni di un intero è dipendente dalla piattaforma, anche se un valore massimo di circa due miliardi è il usuale valore (che è 32 bit firmati). PHP non supporta gli interi senza segno. La dimensione intera può essere determinata utilizzando la costante PHP_INT_SIZE e il valore massimo utilizzando la costante PHP_INT_MAX da PHP 4.4.0 e PHP 5.0.5.
PHP 6 aggiunge "long" (64 bit ints).
non ottengo questi downvotes .. questa è una risposta perfettamente buona, anche con alcune informazioni extra gettate dentro. +1 per correggerlo. – nickf
Questa risposta in origine leggeva "piattaforma * in * dipendente" (non dipendente). Inoltre (ancora) afferma che gli intep a 64 bit non esistevano prima di PHP 6. Questo è falso. – thomasrutter
Dipende dal sistema operativo, ma 2147483647 è il valore normale, secondo lo manual.
In particolare, dipende dal fatto che si stia eseguendo su una piattaforma a 32 bit o 64 bit. 32 bit è solo "normale" in un mondo in cui la maggior parte delle persone esegue server a 32 bit. Sempre più questo non sta diventando il caso. – thomasrutter
32-bit build di PHP:
- interi può essere da -2.147.483.648 a 2,147,483,647 (~ & plusmn; 2 miliardi)
64-bit build di PHP:
- interi possono essere da -9,223,372,036,854,775,808 a 9,223,372,036,854,775,807 (~ & plusmn; 9 quintilioni)
I numeri sono compresi.
Note: alcuni 64-bit costruisce una volta usato interi a 32 bit, in particolare anziani build Windows di PHP
valori al di fuori di questi intervalli sono rappresentati da valori in virgola mobile, come lo sono i valori non interi all'interno di questi gamme. L'interprete determinerà automaticamente quando questo passaggio a virgola mobile deve avvenire in base al fatto che il valore del risultato di un calcolo non possa essere rappresentato come un numero intero.
PHP non supporta gli interi "senza segno" come tali, limitando il valore massimo di tutti gli interi all'intervallo di un numero intero "firmato".
(un po 'in ritardo, ma potrebbe essere utile)
fiducia solo PHP_INT_MAX and PHP_INT_SIZE, questo valore variare il vostro arco (32/64 bit) e il sistema operativo ...
Ogni altro "indovinare" o "suggerimento" può essere falso.
Bene, su amd64 linux, che è abbastanza comune al giorno d'oggi, è 9223372036854775807 (2^63-1) – derobert
Questo è un sacco di cifre: c'è la prima ragione per cui posso scegliere di scegliere AMD su Intel quando acquisto un server dedicato. :) – karim79
@ karim79, penso che sia dovuto all'arco 64-bit, non essendo AMD. =] – strager