Différence entre empty() et isset()
Lors des tests sur les variables, nous avons remarqué qu’il y avait souvent une confusion entre deux fonctions qui se ressemblent un peu : empty() et isset().
empty()
bool emtpy(mixed var) retoure FALSE si var à une valeur non vide et différente de zéro.
Ca, se sont les textes ! Mais qu’est que PHP appelle une chaîne vide ? La confusion vient du fait que ces critères ont évolués depuis PHP 4. Donc pour PHP à partir de PHP 4, une chaîne vide, c’est :
- "" (une chaîne vide)
- 0 (0 en tant qu’entier)
- "0" (0 en tant que chaîne de caractères)
- NULL
- FALSE
- array() (un tableau vide)
- var $var ; (une variable déclarée, mais sans valeur dans une classe)
isset()
Ce qui dit le manuel PHP est explicite :
« isset() renvoie TRUE si la variable var est définie, FALSE sinon.
Si une variable a été détruite avec la fonction unset(), la fonction isset() renverra FALSE. isset() renvera FALSE lors du test d’une variable de valeur NULL. Notez aussi que le caractère nul ("\0") n’est pas équivalent à la constante PHP NULL. »
<?php
$var = '';
// Ceci est vrai, alors le texte est affiché
if (isset($var)) {
echo 'Cette variable existe, donc je peux l\'afficher.';
}
// Dans les exemples suivants, nous utilisons var_dump() pour afficher
// le retour de la fonction isset().
$a = 'test';
$b = 'anothertest';
var_dump(isset($a)); // TRUE
var_dump(isset($a, $b)); // TRUE
unset ($a);
var_dump(isset($a)); // FALSE
var_dump(isset($a, $b)); // FALSE
$foo = NULL;
var_dump(isset($foo)); // FALSE
?>
Comparaison entre empty() et isset()
Pour bien différencier les 2 fonctions, le manuel php propose un exemple clair :
<?php
$var = 0;
// Evalué à vrai car $var est vide
if (empty($var)) {
echo '$var vaut soit 0, vide, ou pas définie du tout';
}
// Evalué à vrai car $var est défini
if (isset($var)) {
echo '$var est définie même si elle est vide';
}
?>
Réalisation de sites web

