Position actuelle: Accueil> Derniers articles> Explication détaillée et différences des fonctions isset(), empty() et is_null() en PHP

Explication détaillée et différences des fonctions isset(), empty() et is_null() en PHP

M66 2025-10-22

Comprendre les valeurs non définies et nulles des variables PHP

Les variables sont un composant essentiel de presque tous les programmes développés avec PHP. La plupart du temps, les variables ont une valeur initiale, mais certaines variables peuvent ne pas être initialisées, ce qui peut amener PHP à lancer un avertissement "variable non définie".

Une variable peut ne pas être définie pour diverses raisons : par exemple, la variable n'est pas déclarée du tout, il y a une faute de frappe ou la variable est définie de manière conditionnelle. De plus, la valeur de la variable peut être NULL, ce qui peut indiquer qu'elle n'a pas été initialisée ou que la fonction a renvoyé une valeur nulle pour indiquer un état.

Il est important de vérifier si les variables sont définies ou vides avant de les utiliser. PHP fournit trois fonctions isset(), empty() et is_null() pour gérer ces situations.

Présentation de la définition des fonctions

Comprenons d’abord les utilisations de base de ces trois fonctions :

isset() : Vérifie si la variable a été déclarée et n'est pas NULL.

empty() : Déterminez si la variable existe et si la valeur n'est pas fausse (y compris 0, chaîne vide, NULL, etc.).

is_null() : Vérifiez si la valeur de la variable est NULL.

Comparaison de isset() et empty()

isset() renvoie true lorsque la variable est définie et n'est pas NULL, et renvoie true même si la valeur de la variable est 0, une chaîne vide ou false. Et empty() renvoie true lorsque la valeur de la variable est une "fausse valeur", comprenant 0, une chaîne vide "", une chaîne "0", un tableau vide, NULL ou false.

Les deux sont similaires dans la mesure où ils sont tous deux des constructions de langage et ne peuvent pas être appelés via des fonctions variables.

<?php
$fruit = '';
if(isset($fruit)) {
    echo 'Do you like '.$fruit.'?';
}
// Output:  Do you like ?

if(!empty($fruit)) {
    echo 'Do you like '.$fruit.'?';
}
// No Output
?>

En fait, empty() peut être implémenté en utilisant isset() combiné avec des opérations logiques, mais il est généralement plus concis d'utiliser directement la fonction intégrée empty() :

<?php
function my_empty($x) {
  return !isset($x) || $x == false;
}
?>

La différence entre isset() et is_null()

is_null() renvoie true lorsque la variable est explicitement définie sur NULL, false sinon. Et isset() renvoie true tant que la variable est définie et non NULL.

<?php
$fruit = NULL;
if(isset($fruit)) {
    echo 'Do you like '.$fruit.'?';
}
// No Output

if(is_null($fruit)) {
    echo 'There is no fruit.';
}
// Output: There is no fruit.
?>

La différence entre vide() et is_null()

empty() renvoie true lorsque la valeur de la variable est une « fausse valeur », y compris une chaîne vide, NULL, un entier 0 ou un tableau vide, tandis que is_null() ne renvoie true que lorsque la valeur de la variable est NULL.

<?php
$person = [
    'first_name' => "Monty",
    &#39;nom&#39; => &#39;&#39;,
    &#39;âge&#39; => &#39;83&#39;,
    &#39;fav_movie&#39; => NULL
];

if(empty($person[&#39;last_name&#39;])) {
    if(is_null($person[&#39;last_name&#39;])) {
        echo &#39;Le nom de famille est défini sur NULL.&#39;;
    } autre {
        echo &#39;Le nom de famille est probablement une chaîne vide.&#39;;
    }
}
// Sortie : Le nom de famille est probablement une chaîne vide.

if(is_null($person[&#39;fav_movie&#39;])) {
    echo $personne[&#39;prénom&#39;].&#39; n&#39;a pas précisé de film préféré.&#39;;
}
// Sortie : Monty n&#39;a pas spécifié de film préféré.
?>

Conseils

Pour écrire du code plus propre et plus sûr, voici quelques conseils :

Plusieurs variables peuvent être transmises à isset() en même temps pour vérifier qu'elles sont toutes définies et non NULL.

Évitez d'utiliser == pour vérifier NULL afin d'éviter de mal interpréter une chaîne vide ou false comme NULL.

Résumer

Cet article analyse en détail l'utilisation et les différences de isset(), empty() et is_null() en PHP. Comprendre leurs différences peut aider les développeurs à gérer le statut des variables avec plus de précision et à améliorer la stabilité et la lisibilité du code.