Demander un devis gratuit

Très facile

Le PHP regorge de fonctions similaires mais différentes sur certains points. Je vous propose aujourd’hui de comprendre la différence entre la fonction isset() et la fonction empty(). Toutes les deux vérifient si une variable existe, mais l’une va plus loin que l’autre. Apprenez à les utiliser au bon moment.

Les fonctions PHP isset() et empty(), quelles différences et à quoi servent-elles ?

La fonction isset() permet de vérifier qu’une variable est définie. Elle est particulièrement utile si on veut éviter de déclarer une variable vide avant de l’utiliser. En programmation, un bon codeur prend soin de déclarer ses variables avant de les appeler. En effet, si vous ne déclarez pas vos variables, des erreurs PHP remonteront et ralentiront par conséquent l’exécution du code. Ceci dit, ce type d’erreur n’empêche pas un programme de fonctionner 😇, mais il est préférable de coder proprement.

 
$toto = ''; //déclaration d'une variable vide 
if(isset($toto)) { 
    echo 'La variable $toto existe !'; 
} else { 
    echo 'La variable $toto n\'existe pas...'; 
} 

echo $titi; // va générer l'erreur "Notice: Undefined variable: titi in file.php on line 8" 

//quand on ne sait pas si une variable existe, la fonction isset() est très utile ! 
if(isset($tata)) { 
    echo "Ah, on dirait bien que la variable \$tata a été déclarée..."; 
} else {  
    echo "Oops, la variable \$tata n'existe pas"; 
} 

 

Ce code affichera « La variable $toto existe ! » car bien qu’elle soit vide, elle est quand même déclarée et c’est justement ce que vérifie la fonction isset() 😉. Il affichera aussi la phrase « Oops, la variable $tata n’existe pas » car cette variable n’est pas déclarée précédemment, ainsi isset($tata) permet d’éviter la notice d’erreur.

La fonction empty() vérifie qu’une variable n’est pas vide, et pour se faire, elle doit d’abord vérifier que la variable existe. Voilà pourquoi, utiliser les fonctions isset() et empty() dans une même condition et pour une même variable est parfaitement inutile 🙄. Exemple :

if( isset($toto) && !empty($toto) ) { ... } //si la variable n'est pas vide, c'est qu'elle existe alors isset() ne sert à rien ici

 

Ceci dit, la fonction empty() est à utiliser avec précaution. Il faut bien comprendre qu’en programmation, le zéro vaut false et par conséquent, si votre variable contient zéro, la fonction empty() va la considérer vide.

$toto = 0;
$titi = "0";

//sans surprise, le zéro est interprété comme false et on entrera logiquement dans cette condition :
if(empty($toto)) {
   echo '$toto est vide';
} 

/* la variable $titi n'est ni un booléen, ni un chiffre, c'est une chaine de caractères. 
Cependant, PHP interprétera l'unique zéro qu'elle contient comme une donnée numérique, 
et donc, si $titi vaut 0, $titi ne contient rien ! 
Là encore, on entre dans la condition. */
if (empty($titi)) { 
   echo '$titi est vide également, même si le zéro qu\'il contient est entouré de guillemets !';
}

 

Avouez-le, vous ne vous attendiez pas à ce dernier exemple ! Le PHP est un langage flexible, mais cette subtilité qui fait tout son charme peut parfois rendre un développeur complètement fou. 🙃

Comment vérifier qu’une variable existe ?

Il n’est pas obligatoire d’utiliser la fonction isset() ou la fonction empty() pour détecter si une variable existe ou contient une valeur. Certains développeurs les utilisent très rarement d’ailleurs. Voici comment faire :

$toto = 1;
$titi = "truc";

if($toto) {
    echo '$toto existe, youpi !';
}

if($titi) {
    echo '$titi existe aussi, merveilleux !';
}

 

Attention, cela fonctionne uniquement si la variable existe et contient une valeur autre que false, null ou interprétée comme zéro. Dans cet exemple, si je n’avais pas déclaré $toto et/ou $titi, PHP aurait sûrement râlé 😕. En effet, des erreurs peuvent remontées selon votre version ou votre configuration de PHP. C’est pourquoi il est recommandé de bien déclarer ses variables avant de les appeler. Sinon, utilisez isset() ou empty(), ces fonctions servent à ça après tout.

Comment vérifier qu’un tableau contient une valeur ?

Pour un tableau (array), c’est un peu différent car on ne veut pas forcément vérifier qu’il est entièrement vide. Souvent, il sera plus simple de vouloir contrôler si une clé ne correspond à aucune valeur. Si on connait la clé, on pourra faire comme ceci :

$tab = array(
    'MAC' => '',
    'PC' => 'ordinateur',
    'TEL' => 'téléphone'
);

//si $tab n'est pas un tableau vide
if( !empty($tab) ) {
    if( isset($tab['PC']) ) { //si la clé 'PC' existe
        echo "J'ai trouvé un ".$tab['PC'];
    } 
}

Ce code affichera « J’ai trouvé un ordinateur ».

Si on souhaite lister les clés sans donnée, on devra parcourir l’ensemble du tableau pour déterminer quelle clé n’a aucune valeur définie. Pour ça, on va utiliser une boucle foreach car c’est la mieux indiquée pour parcourir un array. Exemple :

foreach($tab as $key => $value) {
    if( empty($value) ) {
        echo $key." est vide !";
    }
}

 

Ce code affichera « MAC est vide ! » car c’est la seule ligne du tableau pour laquelle la clé n’est pas affectée à une valeur valide. 😉

Voilà, c’est la fin de ce petit tour d’horizon autour des fonctions PHP isset et empty. J’espère vous avoir appris quelque chose d’utile. Si vous avez des questions, postez-les en commentaires et si l’article vous a plu, pensez à le partager.

Et vous, vous utilisez les fonctions isset et empty en PHP ?


🚀PHP

Rédigé le et modifié le

Soyez le premier à réagir !

Des questions ? Un avis ?

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Expérience
+ de 11 ans d'expérience
Garantie
Garantie incluse
France
Made in France