is_integer()
La funzione is_integer() è un alias di is_int() in PHP. Verifica se una variabile è di tipo intero e restituisce un valore boolean.
Introduzione
is_integer() è un alias di is_int() in PHP. Verifica se il tipo di una variabile è intero e restituisce un boolean. Un intero in PHP è un numero intero senza parte frazionaria, come -5, 0 o 42.
Questa pagina illustra cosa controlla is_integer() (e cosa deliberatamente non controlla), le insidie legate alle stringhe numeriche e quale nome usare nel nuovo codice.
Usa
is_int()al suo posto.is_integer()eis_int()sono la stessa funzione, quindi nessuna delle due è rimossa o deprecata. Tuttavia,is_int()è il nome canonico utilizzato in tutto il manuale PHP e nelle codebase moderne. Preferiscila per coerenza.
Sintassi
is_integer(mixed $value): boolAccetta un argomento, $value, la variabile da ispezionare, e restituisce true solo quando $value è di tipo int, e false per qualsiasi altro tipo.
Esempio di utilizzo
$var1 contiene l'intero 42, quindi la chiamata restituisce true, che echo stampa come 1. $var2 è una string, quindi la chiamata restituisce false, che echo stampa come nulla (una string vuota). Per visualizzare chiaramente i valori boolean, usa var_dump() al posto di echo.
Controlla il tipo, non il valore
Questa è la fonte di confusione più comune: is_integer() osserva il tipo della variabile, quindi una string come "42" o un float come 42.0 non è un intero, anche se "sembra" tale.
<?php
var_dump(is_integer(42)); // bool(true)
var_dump(is_integer("42")); // bool(false) — numeric string, not int
var_dump(is_integer(42.0)); // bool(false) — float, not int
var_dump(is_integer(true)); // bool(false) — bool, not int
var_dump(is_integer(null)); // bool(false)
var_dump(is_integer(PHP_INT_MAX)); // bool(true)
?>Se hai bisogno di accettare stringhe numeriche (ad esempio, valori provenienti da $_GET, $_POST o un file CSV), usa is_numeric() oppure effettua il cast/la validazione con intval().
Quando usarla?
- Proteggere un argomento di funzione prima di eseguire operazioni matematiche solo su interi, ad esempio usando un valore come indice di array o limite di ciclo.
- Distinguere i tipi dopo una funzione che può restituire tipi misti (un pattern comune con
strpos(), che restituisce un offsetintoppurefalse):
<?php
$pos = strpos("hello world", "world");
if (is_integer($pos)) {
echo "Found at index $pos\n"; // Found at index 6
} else {
echo "Not found\n";
}
?>Funzioni correlate per il controllo dei tipi
| Funzione | Restituisce true per |
|---|---|
is_int() | Un int (nome canonico; identico a is_integer()) |
is_float() | Un float (es. 3.14, 42.0) |
is_string() | Una string, inclusa "42" |
is_numeric() | Un int, float, oppure una string numerica |
gettype() | (restituisce il nome del tipo, non un boolean) |
Consulta il capitolo sui tipi di dati PHP per un quadro completo di come PHP categorizza i valori.
Conclusione
is_integer() è un alias di is_int() che restituisce true solo quando una variabile è di tipo int. Ricorda che controlla il tipo, non il valore, quindi le stringhe numeriche e i float restituiscono false. Per il nuovo codice, preferisci il canonico is_int(); usa is_numeric() quando anche le stringhe numeriche devono essere accettate.