is_long()
La funzione is_long() in PHP controlla se una variabile è di tipo intero. Restituisce true se la variabile è un intero, false altrimenti.
Introduzione
is_long() è una funzione built-in di PHP che controlla se una variabile contiene un valore di tipo intero. Restituisce true se la variabile è un intero e false in caso contrario.
La cosa fondamentale da capire è che is_long() è un alias esatto di is_int(): entrambi i nomi richiamano la stessa funzione sottostante e si comportano in modo identico. Questa pagina spiega l'origine del nome is_long(), il suo comportamento e perché in generale dovresti preferire is_int() nel nuovo codice.
Perché il nome "is_long"?
Nel codice sorgente C di PHP, il tipo intero è rappresentato internamente da un long C. Per questa ragione storica, PHP espone tre nomi intercambiabili per lo stesso controllo sugli interi:
is_int()— il nome canonico e raccomandato.is_integer()— un alias mantenuto per leggibilità.is_long()— un alias che rispecchia il nome del tipo C interno.
Tutti e tre sono ancora disponibili nelle versioni attuali di PHP (inclusa PHP 8.x) e restituiscono tutti lo stesso risultato per lo stesso input. Il manuale PHP elenca is_long() e is_integer() come alias di is_int() e raccomanda is_int() per chiarezza.
Sintassi di Base
is_long($variable); // identical to is_int($variable)Il parametro $variable è il valore da verificare. La funzione restituisce true solo per un valore effettivamente intero, senza coercizione di tipo — le stringhe numeriche e i float restituiscono false.
Esempio d'uso
In questo esempio is_long() viene usata per testare tre variabili diverse:
bool(true)
bool(false)
bool(false)Solo $var1 è un vero intero. La stringa numerica "10" e il float 3.14 restituiscono entrambi false, perché is_long() controlla il tipo effettivo senza mai convertire prima il valore. Sostituire is_long() con is_int() produrrebbe esattamente lo stesso output — questo è il significato di "alias".
Filtrare valori per tipo
Poiché restituisce un boolean, is_long() funziona direttamente come callback per funzioni come array_filter(). È utile per mantenere solo i veri interi da un array misto:
Array
(
[0] => 10
[3] => 40
)array_filter() mantiene solo i veri interi, scartando la stringa numerica "20" e il float 30.5. Si noti che le chiavi originali dell'array (0 e 3) vengono preservate, non rinumerate.
Note Importanti
- Alias di
is_int():is_long()non ha un comportamento proprio. Non esiste un tipo "long" separato in PHP distinto daint; il nome riflette semplicemente la rappresentazione C interna. - Ancora disponibile, ma non preferita:
is_long()funziona nelle versioni attuali di PHP, ma il manuale raccomandais_int()per leggibilità. Molte guide di stile e strumenti di analisi statica segnalano l'alias. - Nessuna coercizione di tipo: come
is_int(), restituiscefalseper stringhe numeriche ("123") e float a numero intero (5.0). Per accettare quei valori, usais_numeric()oppurefilter_var($var, FILTER_VALIDATE_INT).
Best Practices
Preferisci is_int() nel nuovo codice
is_int(), is_integer() e is_long() sono intercambiabili, quindi scegline uno e sii coerente. La convenzione della community è is_int() — è la più breve, la più chiara e il nome usato dalla documentazione.
Evita confronti ridondanti
Poiché la funzione restituisce già un boolean, racchiudere il suo risultato in un confronto stretto (=== true) è superfluo. Scrivi semplicemente if (is_int($var)).
Funzioni Correlate per il Controllo dei Tipi
is_int()— il controllo canonico e raccomandato per gli interi.is_integer()— un altro alias leggibile diis_int().is_numeric()—trueper interi, float e stringhe numeriche.is_float()— controlla i valori in virgola mobile.is_string()— controlla i valori di tipo stringa.
Conclusione
is_long() è semplicemente un nome alternativo per is_int(). Esegue un controllo sugli interi rigoroso e privo di coercizione, comportandosi in modo identico alla sua controparte più nota. Poiché l'alias non aggiunge funzionalità e può confondere i lettori, usa is_int() nel nuovo codice e riserva is_long() alla comprensione delle codebase più vecchie che ancora fanno affidamento su questo nome.