W3docs

isset

La construction isset() en PHP vérifie si une variable est définie et non nulle. Cet article couvre la syntaxe, les cas d'usage et les comparaisons.

La fonction PHP isset()

isset() est une construction du langage PHP qui retourne true lorsqu'une variable existe (a été assignée) et n'est pas null. Elle retourne false si la variable n'a jamais été définie, a été explicitement assignée à null, ou a été supprimée avec unset().

Comme la lecture d'une variable non définie déclenche un avis Warning: Undefined variable en PHP, isset() est la méthode standard, sans effets secondaires, pour demander « ai-je une valeur utilisable ici ? » avant de l'utiliser réellement — par exemple, pour protéger l'accès à $_GET, $_POST, ou aux clés de tableau pouvant ne pas être présentes.

Ce chapitre couvre la syntaxe, la forme à plusieurs arguments, son comportement avec les tableaux et les propriétés d'objet, et comment elle se compare à des outils connexes comme empty() et l'opérateur de fusion null.

Syntaxe

isset(mixed $var, mixed ...$vars): bool

Une protection minimale ressemble à ceci :

if (isset($myVariable)) {
  echo "The variable is set.";
} else {
  echo "The variable is not set.";
}

isset() est une construction du langage, pas un appel de fonction, donc vous n'avez pas besoin d'inclure ou d'importer quoi que ce soit pour l'utiliser, et vous pouvez passer plusieurs variables à la fois (voir ci-dessous).

Exemples de base

<?php

// Example 1 — an assigned, non-null variable
$myVariable = "Hello, world!";
echo isset($myVariable) ? "set" : "not set"; // set
echo PHP_EOL;

// Example 2 — a variable that was never declared
echo isset($someOtherVariable) ? "set" : "not set"; // not set
echo PHP_EOL;

// Example 3 — a variable explicitly set to null
$empty = null;
echo isset($empty) ? "set" : "not set"; // not set

Sortie :

set
not set
not set

Le troisième cas est le piège principal : assigner null suffit à faire retourner false à isset(), même si la variable existe techniquement. Si vous devez distinguer « jamais déclarée » de « déclarée mais nulle », utilisez plutôt is_null() ou array_key_exists().

« Essayez vous-même » n'est pas disponible pour cet exemple.

Vérifier plusieurs variables à la fois

Lorsque vous passez plus d'un argument, isset() retourne true uniquement si chaque argument est défini et non nul. C'est pratique pour valider qu'un groupe de champs de formulaire obligatoires sont tous arrivés ensemble.

<?php

$name  = "Ada";
$email = "[email protected]";
$phone = null;

var_dump(isset($name, $email));         // bool(true)
var_dump(isset($name, $email, $phone)); // bool(false) — $phone is null

isset() avec les tableaux

isset() fonctionne sur les éléments de tableau et vérifie en toute sécurité les clés imbriquées sans déclencher d'avertissement lorsqu'une clé intermédiaire est manquante.

<?php

$user = [
  'name'    => 'Ada',
  'address' => ['city' => 'London'],
];

var_dump(isset($user['name']));             // bool(true)
var_dump(isset($user['missing']));          // bool(false)
var_dump(isset($user['address']['city']));  // bool(true)
var_dump(isset($user['address']['zip']));   // bool(false) — no warning

Notez que isset($array['key']) retourne false lorsque la valeur à cette clé est null. Si une clé peut légitimement contenir null et que vous vous intéressez uniquement à la présence de la clé, utilisez array_key_exists().

isset() vs. empty() vs. l'opérateur de fusion null

Ces trois constructions sont souvent confondues. Le tableau montre ce que chacune retourne pour la même entrée :

Valeur de $xisset($x)empty($x)
"hello"truefalse
0 ou "0" ou ""truetrue
nullfalsetrue
non définiefalsetrue

Utilisez donc isset() pour demander « existe-t-il une vraie valeur ici ? », et empty() pour demander « cette valeur est-elle manquante ou fausse (chaîne vide, 0, false, tableau vide) ? ».

Depuis PHP 7, l'opérateur de fusion null ?? s'appuie sur la sémantique de isset() pour fournir une valeur par défaut en une seule expression — c'est le remplacement idiomatique du ternaire isset() ? : :

<?php

$config = ['theme' => 'dark'];

// Verbose, pre-PHP 7 style:
$theme = isset($config['theme']) ? $config['theme'] : 'light';

// Equivalent with the null coalescing operator:
$theme = $config['theme'] ?? 'light';

echo $theme; // dark

$config['missing'] ?? 'light' est évalué à 'light' sans avertissement, précisément parce que ?? vérifie isset() en interne.

Quand utiliser isset()

  • Protéger les données de requête optionnelles : if (isset($_GET['page'])) { ... }.
  • Confirmer les champs obligatoires avant de traiter un formulaire (isset($a, $b, $c)).
  • Lire en toute sécurité des clés de tableau potentiellement manquantes dans une configuration ou des données JSON décodées.
  • Initialiser paresseusement une valeur une seule fois : $cache ??= computeExpensiveValue();.

Optez pour un autre outil lorsque vous devez traiter null comme « présent » (array_key_exists()), vérifier si le contenu d'un objet ou d'un tableau est faux (empty()), ou supprimer entièrement une variable (unset()).

Entraînement

Pratique
Quel est le rôle de isset() en PHP ?
Quel est le rôle de isset() en PHP ?
Was this page helpful?