Numeri PHP
In questo capitolo esamineremo in modo approfondito interi, float e stringhe numeriche.
Numeri PHP
Una cosa da notare su PHP è che fornisce la conversione automatica del tipo di dati.
Quindi, se assegni un valore intero a una variabile, il tipo di quella variabile sarà automaticamente un intero. Quindi, se si assegna una stringa alla stessa variabile, il tipo cambierà in una stringa.
Questa conversione automatica a volte può rompere il tuo codice.
Interi PHP
2, 256, -256, 10358, -179567 sono tutti numeri interi.
Un intero è un numero senza parti decimali.
Un tipo di dati intero è un numero non decimale compreso tra -2147483648 e 2147483647 nei sistemi a 32 bit e tra -92233720368547775808 e 9223372036854775807 nei sistemi a 64 bit. Un valore maggiore (o inferiore) di questo verrà memorizzato come float, poiché supera il limite di un numero intero.
Nota: un'altra cosa importante da sapere è che anche se 4 * 2.5 è 10, il risultato viene memorizzato come float, perché uno degli operandi è un float (2.5).
Ecco alcune regole per gli interi:
- Un numero intero deve avere almeno una cifra
- Un numero intero NON deve avere un punto decimale
- Un numero intero può essere positivo o negativo
- I numeri interi possono essere specificati in tre formati: decimale (a base 10), esadecimale (a base 16 - preceduto da 0x) o ottale (a base 8 - preceduto da 0)
PHP ha le seguenti costanti predefinite per gli interi:
- PHP_INT_MAX - Il numero intero più grande supportato
- PHP_INT_MIN - Il numero intero più piccolo supportato
- PHP_INT_SIZE - La dimensione di un numero intero in byte
PHP ha le seguenti funzioni per verificare se il tipo di una variabile è intero:
- è_int()
- is_integer() - alias di is_int()
- is_long() - alias di is_int()
Esempio
Controlla se il tipo di una variabile è intero:
<?php
$x = 5985;
var_dump(is_int($x));
$x = 59.85;
var_dump(is_int($x));
?>
PHP fluttua
Un float è un numero con una virgola decimale o un numero in forma esponenziale.
2.0, 256.4, 10.358, 7.64E+5, 5.56E-5 sono tutti float.
Il tipo di dati float può in genere memorizzare un valore fino a 1,7976931348623E+308 (dipendente dalla piattaforma) e avere una precisione massima di 14 cifre.
PHP ha le seguenti costanti predefinite per i float (da PHP 7.2):
- PHP_FLOAT_MAX - Il numero in virgola mobile più grande rappresentabile
- PHP_FLOAT_MIN - Il numero in virgola mobile positivo più piccolo rappresentabile
- - PHP_FLOAT_MAX - Il più piccolo numero in virgola mobile negativo rappresentabile
- PHP_FLOAT_DIG - Il numero di cifre decimali che possono essere arrotondate in float e viceversa senza perdita di precisione
- PHP_FLOAT_EPSILON - Il più piccolo numero positivo rappresentabile x, in modo che x + 1.0 != 1.0
PHP ha le seguenti funzioni per verificare se il tipo di una variabile è float:
- is_float()
- is_double() - alias di is_float()
Esempio
Controlla se il tipo di una variabile è float:
<?php
$x = 10.365;
var_dump(is_float($x));
?>
PHP Infinito
Un valore numerico maggiore di PHP_FLOAT_MAX è considerato infinito.
PHP ha le seguenti funzioni per verificare se un valore numerico è finito o infinito:
Tuttavia, la funzione PHP var_dump() restituisce il tipo di dati e il valore:
Esempio
Controlla se un valore numerico è finito o infinito:
<?php
$x = 1.9e411;
var_dump($x);
?>
PHP NaN
NaN sta per Non un numero.
NaN è usato per operazioni matematiche impossibili.
PHP ha le seguenti funzioni per verificare se un valore non è un numero:
Tuttavia, la funzione PHP var_dump() restituisce il tipo di dati e il valore:
Esempio
Il calcolo non valido restituirà un valore NaN:
<?php
$x = acos(8);
var_dump($x);
?>
Stringhe numeriche PHP
La funzione PHP is_numeric() può essere utilizzata per scoprire se una variabile è numerica. La funzione restituisce true se la variabile è un numero o una stringa numerica, false in caso contrario.
Esempio
Controlla se la variabile è numerica:
<?php
$x = 5985;
var_dump(is_numeric($x));
$x = "5985";
var_dump(is_numeric($x));
$x = "59.85" + 100;
var_dump(is_numeric($x));
$x = "Hello";
var_dump(is_numeric($x));
?>
Nota: Da PHP 7.0: La funzione is_numeric() restituirà FALSE per le stringhe numeriche in forma esadecimale (es. 0xf4c3b00c), poiché non sono più considerate stringhe numeriche.
PHP Casting di stringhe e float su numeri interi
A volte è necessario eseguire il cast di un valore numerico in un altro tipo di dati.
La funzione (int), (intero) o intval() viene spesso utilizzata per convertire un valore in un intero.
Esempio
Cast float e string su intero:
<?php
// Cast float to int
$x = 23465.768;
$int_cast = (int)$x;
echo $int_cast;
echo "<br>";
// Cast string to int
$x =
"23465.768";
$int_cast = (int)$x;
echo $int_cast;
?>