empty
Apprenez comment empty() vérifie si une variable est vide ou non définie, quelles valeurs sont considérées comme vides (y compris le piège "0"), et en quoi elle diffère de isset().
La construction du langage PHP empty()
empty() est une construction du langage PHP qui vous indique si une variable est vide — c'est-à-dire si elle n'existe pas ou contient une valeur que PHP considère comme « falsy » (telle que "", 0 ou null). Comme elle n'émet jamais d'avertissement pour les variables non définies, c'est l'outil privilégié pour vérifier les entrées optionnelles comme les champs de formulaire, les paramètres de requête et les valeurs de configuration.
Cette page couvre la syntaxe, la liste exacte des valeurs traitées comme vides, les pièges courants, et comment empty() diffère des constructions associées isset() et is_null().
À strictement parler,
empty()est une construction du langage, et non une fonction, même si elle s'écrit avec des parenthèses. Cette distinction a une conséquence pratique — voir Elle ne fonctionne qu'avec des variables ci-dessous.
Syntaxe
<?php
if (empty($variable)) {
// $variable is empty (or does not exist)
}empty($variable) retourne true lorsque la variable est vide et false dans le cas contraire. Elle est logiquement équivalente à !isset($variable) || $variable == false.
Ce qui est considéré comme vide
Une variable est vide lorsqu'elle n'existe pas ou contient l'une de ces valeurs :
| Valeur | Pourquoi elle est vide |
|---|---|
| variable non définie / undefined variable | la variable n'a jamais été assignée |
null | le type « aucune valeur » |
false | le boolean false |
0 (int) et 0.0 (float) | zéro numérique |
"0" (string) | la string contenant un seul zéro — une surprise classique |
"" (string vide) | une string sans caractères |
[] (array vide) | un array sans éléments |
Tout le reste — y compris "0.0", " " (un espace), "false", et l'array [0] — n'est pas vide.
La règle du
"0"est celle qui surprend le plus. Un numéro de maison, un code postal ou un terme de recherche valant"0"sera signalé comme vide. Si un zéro littéral est une valeur valide, vérifiez la longueur ou comparez explicitement au lieu d'utiliserempty().
Exemples
<?php
// Example 1 — empty string
$myVariable = "";
if (empty($myVariable)) {
echo "Variable is empty" . PHP_EOL;
} else {
echo "Variable is not empty" . PHP_EOL;
}
// Example 2 — empty array
$myArray = [];
if (empty($myArray)) {
echo "Array is empty" . PHP_EOL;
} else {
echo "Array is not empty" . PHP_EOL;
}
// Output:
// Variable is empty
// Array is emptyUn cas d'usage pratique : valider les données d'un formulaire
empty() brille lorsqu'il s'agit de se prémunir contre des données de requête manquantes ou vides, car elle vérifie « non défini » et « vide » dans une seule expression :
<?php
$username = $_POST['username'] ?? null;
if (empty($username)) {
echo "Please enter a username." . PHP_EOL;
} else {
echo "Welcome, $username!" . PHP_EOL;
}
// With $_POST['username'] missing or "" → "Please enter a username."
// With $_POST['username'] = "Sam" → "Welcome, Sam!"Le piège du "0" en action
<?php
$values = ["", "0", "0.0", "hello", " "];
foreach ($values as $value) {
$state = empty($value) ? "empty" : "not empty";
echo "'$value' is $state" . PHP_EOL;
}
// Output:
// '' is empty
// '0' is empty
// '0.0' is not empty
// 'hello' is not empty
// ' ' is not emptyNotez que "0" est signalé comme vide, mais "0.0" et un espace simple ne le sont pas.
Elle ne fonctionne qu'avec des variables
Comme empty() est une construction du langage, elle ne peut être utilisée qu'avec des variables — passer le résultat d'une expression ou d'un appel de fonction est une erreur de syntaxe avant PHP 5.5 et un piège logique à éviter en général :
<?php
// Valid — argument is a variable:
$name = trim(" ");
if (empty($name)) {
echo "Name is blank";
}
// Avoid — empty(trim($name)) reads awkwardly; assign first, as above.empty() vs isset() vs is_null()
Ces trois constructions sont faciles à confondre. Le tableau montre ce que chacune retourne pour les mêmes entrées :
| Entrée | empty() | isset() | is_null() |
|---|---|---|---|
| variable non définie | true | false | warning + true |
null | true | false | true |
"" | true | true | false |
0 / "0" | true | true | false |
false | true | true | false |
[] | true | true | false |
"hello" | false | true | false |
Règles générales :
- Utilisez
isset()pour demander « cette variable existe-t-elle et n'est-elle pasnull? » — idéal pour les clés de tableau et les propriétés d'objet. - Utilisez
is_null()pour demander « cette valeur est-elle exactementnull? » et rien d'autre. - Utilisez
empty()pour demander « est-ce manquant ou vide ? » — la vérification la plus large et la plus permissive.
Conclusion
empty() vous offre un moyen unique, sans avertissement, de vérifier si une variable est manquante ou contient une valeur falsy, ce qui en fait un outil naturel pour valider les entrées optionnelles. Gardez à l'esprit la règle du "0", souvenez-vous qu'elle n'accepte que des variables, et utilisez isset() ou is_null() lorsque vous avez besoin d'un test plus précis. Pour en savoir plus sur les valeurs sur lesquelles ces vérifications opèrent, consultez PHP Data Types et PHP Variables.