En PHP, chaque expression a l'un des types intégrés suivants en fonction de sa valeur:
PHP est un langage typé dynamiquement, ce qui signifie que par défaut, il n'est pas nécessaire de spécifier le type d'une variable, car cela sera déterminé au moment de l'exécution. Cependant, il est possible de typer statiquement certains aspects du langage en utilisant les déclarations de type. Différents types pris en charge par le système de types de PHP sont disponibles sur la page du système de types.
Les types limitent le type d'opérations qui peuvent être effectuées sur eux. Cependant, si une expression/variable est utilisée dans une opération que son type ne supporte pas, PHP tentera de jongler de type dans un type compatible avec l'opération. Ce processus dépend du contexte dans lequel la valeur est utilisée. Pour plus d’informations, consultez la section sur le jonglage de type.
Les tableaux de comparaison de type peuvent également être utiles, car divers exemples de comparaison entre des valeurs de différents types sont présents.
Note: Il est possible de forcer l’évaluation d’une expression à un certain type en utilisant un type casting. Une variable peut également être convertie sur place à l’aide de la fonction settype().
Pour vérifier le type et la valeur d'une
expression, utilisez la fonction
var_dump().
Pour récupérer le type d'une
expression,
utiliser la fonction get_debug_type().
Toutefois, pour vérifier si une expression est d'un certain type, utilisez
plutôt les fonctions
is_type
.
<?php
$a_bool = TRUE; // un booléen
$a_str = "foo"; // une chaîne de caractères
$a_str2 = 'foo'; // une chaîne de caractères
$an_int = 12; // un entier
echo gettype($a_bool); // affiche : boolean
echo gettype($a_str); // affiche : string
// Si c'est un entier, incrément de 4
if (is_int($an_int)) {
$an_int += 4;
}
// Si $a_bool est une chaîne de caractères, on l'affiche
if (is_string($a_bool)) {
echo "String: $a_bool";
}
?>
Résultat de l'exemple ci-dessus en PHP 8 :
bool string int(16)
Note: Antérieur à PHP 8.0.0, lorsque le get_debug_type() n’est pas disponible, la fonction gettype() peut être utilisée à la place. Cependant, elle n’utilise pas les noms de type canoniques.