Fermer

février 7, 2023

Comment vérifier si une variable est définie en PHP —

Comment vérifier si une variable est définie en PHP —


Dans cette astuce PHP rapide, nous verrons comment vérifier si des variables sont définies ou non, et si oui, quelles sont leurs valeurs – ce qui est une tâche très courante en programmation.

Lors de la vérification si une variable est définie en PHP, notre première impulsion pourrait être d’utiliser le isset() fonction. Et même si cela fonctionnera dans la plupart des cas, si nous examinons la définition du isset() fonction, nous verrons ce qui suit :

isset: détermine si une variable est déclarée et est autre que nulle.

Cependant, en PHP, nous pouvons définir une variable pour être NULL:

<?php
    $variable = NULL;
    var_dump(isset($variable));

Cette attribution reviendra false – même si nous avons explicitement défini notre variable sur NULL! Il s’agit d’une condition dans PHP qui pourrait générer une certaine confusion. Au fur et à mesure que nous procédons ci-dessous, nous examinerons le isset() méthode et quand l’utiliser, et quelles autres méthodes nous pouvons utiliser quand isset ne fonctionne pas.

Entrez empty() et is_null()

Tandis que le isset() peut nous aider à déterminer si une variable a été définie avec une certaine valeur, elle ne nous aidera pas si la variable a été définie avec NULL. Pour faire face à cette situation, nous devons utiliser soit le empty() ou la is_null() fonction. Le empty() fonction déterminera si une variable est vide. Cela fonctionnera (c’est-à-dire, retournera true) pour:

  • "" (une chaîne vide)
  • 0 (0 comme entier)
  • 0.0 (0 comme flottant)
  • "0" (0 sous forme de chaîne)
  • NULL
  • FALSE
  • array() (un tableau vide)
  • $var; (une variable déclarée, mais sans valeur)

Cela signifie que nous pouvons utiliser empty() pour déterminer si une variable est vide ou non. Et dans ce cas, les deux NULL et false sont considérés comme vides :

<?php
    $variable = NULL;
    var_dump(empty($variable));

Nous pouvons également utiliser le is_null() fonction. Cette fonction déterminera si une variable est nulle ou non.

Voici un exemple d’utilisation is_null() pour déterminer si une variable est ou n’est pas nulle :

<?php
    $variable = NULL;
    var_dump(is_null($variable));

La chose la plus importante lorsqu’il s’agit de variables en PHP est de comprendre les différences entre isset(), is_null()et empty(). Ces trois fonctions peuvent être utilisées pour déterminer l’état d’une variable, mais elles ont des comportements différents. Le tableau suivant peut être utilisé pour mettre en évidence les différences entre les fonctions.

«  »« fou »NULFAUX0indéfini
vide()VraiFAUXVraiVraiVraiVrai
est_null()FAUXFAUXVraiFAUXFAUXVrai (erreur)
isset()VraiVraiFAUXVraiVraiFAUX

Y a-t-il une seule fonction que nous pouvons utiliser ?

En utilisant get_defined_vars() renverra un tableau associatif avec des clés comme noms de variables et des valeurs comme valeurs de variables. Nous ne pouvons toujours pas utiliser isset(get_defined_vars()['variable']) ici, car la clé pourrait exister et la valeur est toujours nulle, nous devons donc utiliser array_key_exists('variable', get_defined_vars()).

Par exemple:

<?php
    $variable = null;
    $isset = array_key_exists('variable', get_defined_vars());
    var_dump($isset); 

    $isset = array_key_exists('otherVariable', get_defined_vars());
    var_dump($isset); 

En utilisant get_defined_vars() de cette façon, nous pouvons être sûrs à 100 % que nous vérifions si la variable est définie ou non.

Conclusion

Dans ce court article, nous avons expliqué comment vérifier si une variable est définie en PHP ou non. Nous avons également examiné les différences entre set, empty et null, et les principales considérations à garder à l’esprit lors de l’utilisation des fonctions communes isset(), is_null()et empty(). Ainsi, la prochaine fois que vous aurez besoin de vérifier l’état d’une variable PHP, vous aurez toutes les informations dont vous avez besoin pour choisir la bonne méthode et éliminer toutes les ambiguïtés de votre code.




Source link