W3docs

gettype()

La fonction gettype() en PHP retourne le type d'une variable sous forme de chaîne lisible, utile pour le débogage et la gestion des entrées mixtes.

Introduction

PHP est un langage à typage dynamique : le type d'une variable est déterminé à l'exécution, et non déclaré à l'avance. La fonction intégrée gettype() vous permet d'inspecter ce type à l'exécution, en retournant une chaîne lisible telle que "integer" ou "string". Elle est pratique lorsque vous déboguez des valeurs inattendues, branchez votre code selon le type d'une entrée mixte, ou rédigez des messages de journalisation décrivant ce que vous avez réellement reçu.

Cette page couvre la syntaxe de la fonction, les chaînes exactes qu'elle peut retourner, les particularités des noms de types hérités qui piègent les développeurs, et quand utiliser gettype() plutôt que les fonctions dédiées is_*.

Syntaxe

gettype(mixed $value): string

gettype() prend un seul argument, $value — la variable dont vous souhaitez connaître le type — et retourne une chaîne nommant ce type. Elle ne lève jamais d'exception et ne modifie jamais son argument.

Valeurs de retour

gettype() retourne l'une des chaînes d'un ensemble fixe :

Chaîne retournéeType PHP
"boolean"bool (true / false)
"integer"int
"double"float (oui, double, et non "float" — voir l'écueil ci-dessous)
"string"string
"array"array
"object"toute instance d'objet
"resource"une ressource ouverte (ex. un descripteur de fichier)
"resource (closed)"une ressource fermée (PHP 7.2+)
"NULL"la valeur null
"unknown type"un type que PHP ne peut pas nommer autrement

Exemple de base

Exemple de gettype() en PHP

php— editable, runs on the server

Ici, nous définissons quatre variables de types différents et demandons à gettype() de nommer chacune d'elles. La sortie est string, integer, boolean et array — un nom de type par ligne.

L'écueil "double" et "integer"

Les chaînes retournées par gettype() ne correspondent pas aux mots-clés utilisés dans les déclarations de types. Un float est signalé comme "double", et un int est signalé comme "integer" :

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

À cause de cela, comparer la sortie de gettype() avec "float" ou "int" échoue silencieusement. Si vous n'avez besoin que d'une réponse oui/non sur un seul type, préférez les fonctions dédiées — is_int(), is_float(), is_string(), is_array(), et leurs semblables — qui sont à la fois plus rapides et exemptes de la surprise liée au nommage :

<?php
$value = 7;

// Brittle: depends on the legacy name
if (gettype($value) === "integer") { /* ... */ }

// Clearer and faster:
if (is_int($value)) { /* ... */ }
?>

Sur PHP 8.0 et versions ultérieures, get_debug_type() est l'alternative moderne : elle retourne les noms canoniques (int, float, bool) et, pour les objets, le nom de classe réel plutôt que simplement "object".

Quand utiliser gettype()

  • Débogage et journalisation — afficher le type d'une valeur aux côtés de son contenu lors de la recherche d'un bogue.
  • Gestion générique d'entrées mixtes — brancher dans un switch lorsqu'une fonction accepte légitimement plusieurs types.
  • Inspection rapide — une vérification ponctuelle en console sans se soucier du nommage moderne.

Pour des dumps structurés complets d'une valeur (son type et son contenu, de manière récursive), utilisez var_dump() ou print_r(). Pour changer le type d'une variable plutôt que de le lire, consultez settype(). Pour une vue d'ensemble du système de types de PHP, lisez PHP Data Types.

Conclusion

gettype() vous donne une réponse rapide sous forme de chaîne à la question « quel type est cette valeur ? » — utile pour le débogage, la journalisation et la gestion des entrées mixtes. N'oubliez pas les noms hérités ("double" pour les flottants, "integer" pour les entiers) et préférez les fonctions is_* ou get_debug_type() lorsque vous avez besoin d'une vérification précise et pérenne.

Pratique

Pratique
Quel est le but de la fonction 'gettype()' en PHP ?
Quel est le but de la fonction 'gettype()' en PHP ?
Was this page helpful?