W3docs

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:

php— editable, runs on the server
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:

php— editable, runs on the server
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 da int; il nome riflette semplicemente la rappresentazione C interna.
  • Ancora disponibile, ma non preferita: is_long() funziona nelle versioni attuali di PHP, ma il manuale raccomanda is_int() per leggibilità. Molte guide di stile e strumenti di analisi statica segnalano l'alias.
  • Nessuna coercizione di tipo: come is_int(), restituisce false per stringhe numeriche ("123") e float a numero intero (5.0). Per accettare quei valori, usa is_numeric() oppure filter_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 di is_int().
  • is_numeric()true per 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.

Pratica

Pratica
Quale delle seguenti affermazioni sulla funzione PHP 'is_long' è vera?
Quale delle seguenti affermazioni sulla funzione PHP 'is_long' è vera?
Was this page helpful?