Le 24 Novembre 2015

Tester une variable avec isset et empty

Quelles proviennent d’un formulaire, d’une variable de session ou juste déclarées nous devons régulièrement tester nos variables afin de déterminer la suite de notre programme. Pour cela PHP mets à disposition 2 fonctions (ou plus précisément 2 structures de langage) bien utiles mais parfois ambigüe quand à choisir laquelle est la mieux adapté à la situation.

Commençons d’abord par les découvrir avant de nous intéresser à la pratique selon différents cas.

empty()

Détermine si une variable est considérée comme vide. Une variable est considérée comme vide si elle n'existe pas, ou si sa valeur équivaut à FALSE. La fonction empty ne génère pas d'alerte si la variable n'existe pas.

Exemple de valeurs ou une variable est considéré comme étant vide:

  • "" (une chaîne vide)
  • 0 (0 en tant qu'entier)
  • 0.0 (0 en tant que nombre à virgule flottante)
  • "0" (0 en tant que chaîne de caractères)
  • NULL
  • FASLE
  • array() (un tableau vide)
  • $var; (une variable déclarée, mais sans valeur)

Source: php.net

isset()

Détermine si une variable est définie et est différente de NULL. Finalement on vérifie simplement qu’elle existe ou non.

Méthode simple pour tester une variable avec un var_dump()

PHP

	$_GET['user'] = 'Alicia';
	
	var_dump($_GET['user']);
	// Affichage :
	string 'Alicia' (length=6)
	
	var_dump(isset($_GET['user']));
	var_dump(!isset($_GET['user']));
	var_dump(empty($_GET['user']));
	var_dump(!empty($_GET['user']));
	
	// Résultat :
	boolean true
	boolean false
	boolean false
	boolean true

-- DEMO: Tableaux d’exemples avec des valeurs diverses --

Quelle fonction choisir selon les cas ?

Le cas des variables simples et variables de session:

Etant donné que chacune de ces variables peuvent être naturellement nulles, les 2 techniques sont souvent utilisées selon le contexte conditionnel. Il suffit juste de bien tester afin de rester logique. Ce qui est bien différent dans le cas des formulaires qui suit…

Le cas des formulaires :

Voilà un contexte intéressant, contrairement au cas précédent ici les données sont entrées par un utilisateur. Une fois le formulaire validé il faut être logique, on n’a pas besoins de savoir si tel ou tel champ existe. En effet les données transmises existent réellement, qu’elles soient vides ou non. Et ceci est aussi valable pour les champs de type radio, checkbox, etc.…

C’est une situation que l’on rencontre parfois dans les forums, la personne teste ces variables et se trouve face à une incohérence logique selon l’existence et la contenance de celles-ci…

Par conséquent la fonction à utiliser sera !empty() afin de savoir si d’une : la variable existe et enfin si elle est vide ou non.

-- DEMO: Formulaire de test --

Voilà, vous savez maintenant comment choisir la méthode à utiliser pour tester vos variables…