W3docs

gettype()

La funzione gettype() in PHP restituisce il tipo di dato di una variabile. Scopri la sintassi, i valori restituiti e quando usarla.

Introduzione

PHP è un linguaggio a tipizzazione dinamica: il tipo di una variabile viene determinato in fase di esecuzione, non dichiarato in anticipo. La funzione built-in gettype() consente di ispezionare quel tipo in fase di esecuzione, restituendo una stringa leggibile dall'uomo come "integer" o "string". È utile quando si esegue il debug di valori inattesi, si vuole ramificare in base al tipo di un input misto o si scrivono messaggi di log che descrivono ciò che si è effettivamente ricevuto.

Questa pagina tratta la sintassi della funzione, le stringhe esatte che può restituire, le stranezze sui nomi di tipo legacy che creano confusione e quando usare gettype() rispetto alle funzioni dedicate is_*.

Sintassi

gettype(mixed $value): string

gettype() accetta un singolo argomento, $value — la variabile di cui si vuole conoscere il tipo — e restituisce una stringa che indica quel tipo. Non genera mai eccezioni e non modifica mai il suo argomento.

Valori restituiti

gettype() restituisce una delle seguenti stringhe predefinite:

Stringa restituitaTipo PHP
"boolean"bool (true / false)
"integer"int
"double"float (sì, double, non "float" — vedi la nota sotto)
"string"string
"array"array
"object"qualsiasi istanza di object
"resource"una risorsa aperta (es. un handle di file)
"resource (closed)"una risorsa chiusa (PHP 7.2+)
"NULL"il valore null
"unknown type"un tipo che PHP non riesce a nominare altrimenti

Esempio base

Esempio di gettype() in PHP

php— editable, runs on the server

Qui definiamo quattro variabili di tipi diversi e chiediamo a gettype() di nominare ciascuna. L'output è string, integer, boolean e array — un nome di tipo per riga.

La stranezza di "double" e "integer"

Le stringhe restituite da gettype() non corrispondono alle parole chiave usate nelle dichiarazioni di tipo. Un float viene riportato come "double" e un int viene riportato come "integer":

<?php
echo gettype(3.14), "\n"; // double  (NOT "float")
echo gettype(7),    "\n"; // integer (NOT "int")
echo gettype(null), "\n"; // NULL    (uppercase)
?>

Per questo motivo, confrontare l'output di gettype() con "float" o "int" fallisce silenziosamente. Se hai bisogno solo di una risposta sì/no riguardo a un singolo tipo, preferisci le funzioni dedicate — is_int(), is_float(), is_string(), is_array() e simili — che sono sia più veloci che prive della sorpresa sui nomi:

<?php
$value = 7;

// Fragile: dipende dal nome legacy
if (gettype($value) === "integer") { /* ... */ }

// Più chiaro e veloce:
if (is_int($value)) { /* ... */ }
?>

Su PHP 8.0 e versioni successive, get_debug_type() è l'alternativa moderna: restituisce i nomi canonici (int, float, bool) e, per gli object, il nome effettivo della classe anziché semplicemente "object".

Quando usare gettype()

  • Debug e logging — stampare il tipo di un valore insieme al suo contenuto mentre si cerca un bug.
  • Gestione generica di input misti — ramificare in un switch quando una funzione accetta legittimamente diversi tipi.
  • Ispezione rapida — un controllo occasionale sulla console senza preoccuparsi dei nomi moderni.

Per dump strutturati completi di un valore (il suo tipo e il suo contenuto, ricorsivamente), usa var_dump() o print_r(). Per cambiare il tipo di una variabile anziché leggerlo, consulta settype(). Per una panoramica più ampia del sistema di tipi di PHP, leggi PHP Data Types.

Conclusione

gettype() fornisce una risposta rapida e basata su string a "che tipo è questo valore?" — utile per il debug, il logging e la gestione di input misti. Ricorda solo i nomi legacy ("double" per i float, "integer" per gli int) e usa le funzioni is_* o get_debug_type() quando hai bisogno di un controllo preciso e a prova di futuro.

Esercitazione

Pratica
Qual è lo scopo della funzione 'gettype()' in PHP?
Qual è lo scopo della funzione 'gettype()' in PHP?
Was this page helpful?