PHP Interi


Esempio

Gli integer in PHP possono essere specificati in modo nativo in base 2 (binario), base 8 (ottale), base 10 (decimale) o base 16 (esadecimale).

$my_decimal = 42;
$my_binary = 0b101010;
$my_octal = 052;
$my_hexadecimal = 0x2a;

echo ($my_binary + $my_octal) / 2;
// Output is always in decimal: 42

Gli interi sono lunghi 32 o 64 bit, a seconda della piattaforma. La costante PHP_INT_SIZE mantiene le dimensioni integer in byte. PHP_INT_MAX e (dal PHP 7.0) PHP_INT_MIN sono anche disponibili.

printf("Integers are %d bits long" . PHP_EOL, PHP_INT_SIZE * 8);
printf("They go up to %d" . PHP_EOL, PHP_INT_MAX);

I valori interi vengono creati automaticamente come necessario da float, booleani e stringhe. Se è necessario un typecast esplicito, può essere eseguito con il cast (int) o (integer) :

$my_numeric_string = "123";
var_dump($my_numeric_string);
// Output: string(3) "123"
$my_integer = (int)$my_numeric_string;
var_dump($my_integer);
// Output: int(123)

L'overflow dei numeri interi verrà gestito dalla conversione in un float:

$too_big_integer = PHP_INT_MAX + 7;
var_dump($too_big_integer);
// Output: float(9.2233720368548E+18)

Non esiste un operatore di divisione intero in PHP, ma può essere simulato utilizzando un cast implicito, che esegue sempre "round" semplicemente scartando la parte float. A partire dalla versione 7 di PHP, è stata aggiunta una funzione di divisione intera.

$not_an_integer = 25 / 4;
var_dump($not_an_integer);
// Output: float(6.25)
var_dump((int) (25 / 4)); // (see note below)
// Output: int(6)
var_dump(intdiv(25 / 4)); // as of PHP7
// Output: int(6)

(Si noti che le parentesi aggiuntive intorno a (25 / 4) sono necessarie perché il cast (int) ha una precedenza maggiore rispetto alla divisione)