Comprendre les types de données PHP
Découvrez les huit types de données PHP — int, float, bool, string, array, object, null et resource — avec exemples, vérification de types et règles de conversion.
Un type de données décrit le type de valeur que contient une variable et les opérations valides sur elle. PHP est dynamiquement typé : vous ne déclarez jamais de type, vous assignez simplement une valeur et PHP en déduit le type. Une même variable peut même changer de type au cours d'un script. Comprendre les huit types natifs — et la façon dont PHP effectue les conversions entre eux — est la base pour écrire du code PHP prévisible.
Ce chapitre couvre tous les types PHP, comment inspecter le type d'une valeur à l'exécution, et les règles de conversion de types qui piègent la plupart des débutants.
Les huit types de données PHP
PHP possède huit types primitifs, regroupés en trois familles :
| Famille | Types |
|---|---|
| Scalaire (valeur unique) | int, float, bool, string |
| Composé (collections) | array, object |
| Spécial | null, resource |
Vous pouvez demander à PHP le type de n'importe quelle valeur avec la fonction gettype(), ou vérifier un type spécifique avec des fonctions comme is_int(), is_string() ou is_null().
<?php
$value = 42;
echo gettype($value); // integer
$value = "now I'm a string";
echo PHP_EOL . gettype($value); // stringTypes scalaires
Les types scalaires contiennent une valeur unique.
Integer
Un entier est un nombre entier, positif ou négatif, sans virgule décimale. En savoir plus dans les nombres PHP.
<?php
$num = 42; // decimal
$negative = -7;
$hex = 0x1A; // hexadecimal (26)
$binary = 0b101; // binary (5)
echo "$num $negative $hex $binary"; // 42 -7 26 5Float
Un float (nombre à virgule flottante) contient un nombre avec un point décimal ou un exposant. Notez que les floats sont approximatifs, donc ne les comparez jamais pour une égalité exacte.
<?php
$price = 12.99;
$scientific = 1.2e3; // 1200
echo $price + $scientific; // 1212.99Boolean
Un boolean ne contient que true ou false. C'est le type produit par les comparaisons et utilisé par les conditions comme if.
<?php
$isActive = true;
$hasError = false;
var_dump($isActive); // bool(true)String
Une string est une séquence de caractères. Les chaînes entre guillemets doubles interpolent les variables ; les chaînes entre guillemets simples ne le font pas. Consultez les chaînes PHP pour plus de détails.
<?php
$name = "John";
echo "Hello, $name!"; // Hello, John!
echo PHP_EOL . 'Hello, $name!'; // Hello, $name! (no interpolation)Types composés
Les types composés regroupent plusieurs valeurs ensemble.
Array
Un tableau stocke une carte ordonnée de paires clé/valeur dans une seule variable. Utilisez la syntaxe courte [] en PHP moderne.
<?php
$fruits = ["apple", "banana", "cherry"];
$prices = ["apple" => 1.20, "banana" => 0.50]; // associative
echo $fruits[1]; // banana
echo PHP_EOL . $prices["apple"]; // 1.2Object
Un objet est une instance d'une classe — il regroupe des données (propriétés) et des comportements (méthodes). Créez-en un avec le mot-clé new.
<?php
class Person {
public function __construct(public string $name) {}
public function greet(): string {
return "Hi, I'm {$this->name}";
}
}
$person = new Person("Ada");
echo $person->greet(); // Hi, I'm AdaTypes spéciaux
NULL
null représente une variable sans valeur. Une variable est null si elle a reçu la constante null, n'a pas encore été définie, ou a été supprimée avec unset(). Vérifiez-le avec is_null() ou === null.
<?php
$age = null;
var_dump(is_null($age)); // bool(true)Resource
Une resource est une variable spéciale contenant une référence à un objet externe tel qu'un fichier ouvert ou une connexion à une base de données. Vous ne créez pas de ressources directement — des fonctions comme fopen() les retournent. Les ressources sont libérées automatiquement lorsqu'elles ne sont plus utilisées.
Conversion de types et cast
Comme PHP est dynamiquement typé, il convertit automatiquement (« jongle avec ») les types lorsqu'une opération le nécessite. Par exemple, une chaîne numérique devient un nombre dans une opération arithmétique :
<?php
$result = "5" + 3; // the string "5" is converted to int 5
echo $result; // 8Une chaîne qui ne commence que par des chiffres (comme "5 apples") génère un avertissement en PHP moderne, alors convertissez délibérément avec un cast à la place.
Lorsque vous avez besoin d'un contrôle explicite, castez une valeur en écrivant le type cible entre parenthèses :
<?php
$text = "12.99";
$asFloat = (float) $text; // 12.99 as a float
$asInt = (int) $text; // 12 (truncated)
var_dump($asInt); // int(12)Attention à la valeur de vérité : lorsqu'ils sont convertis en bool, les valeurs 0, 0.0, "", "0", [] et null sont toutes false ; presque tout le reste est true.
<?php
var_dump((bool) "0"); // bool(false)
var_dump((bool) "0.0"); // bool(true) — surprising!Quand utiliser quel type
- Utilisez int/float pour les quantités et les calculs ; recourez aux helpers de PHP Numbers pour le formatage.
- Utilisez string pour le texte et les identifiants.
- Utilisez bool pour les indicateurs et les résultats de comparaisons.
- Utilisez array pour stocker des listes ou des maps de valeurs liées.
- Utilisez object pour modéliser des entités du monde réel avec à la fois des données et des comportements.
- Utilisez null pour signaler « pas encore de valeur » plutôt qu'un faux substitut comme
0ou"".
Résumé
PHP déduit automatiquement le type d'une valeur à partir de ce que vous assignez, et prend en charge huit types répartis dans les familles scalaire, composée et spéciale. Inspectez les types avec gettype() et les fonctions is_*, et contrôlez les conversions avec des casts explicites. Maîtriser la conversion de types — notamment les règles sur les bool et les chaînes numériques — évite toute une classe de bugs subtils. Ensuite, découvrez comment les types interagissent avec les opérateurs et comment les stocker dans les variables.