La fonction isset()
détermine si une variable est définie et n'est pas NULL.
Si une variable a été désaffectée avec unset()
, elle ne sera plus définie. isset()
renverra FALSE si on teste une variable qui a été définie comme NULL. Notez également qu'un octet NULL ("\0")
n'est pas équivalent à la constante NULL de PHP.
Si plusieurs paramètres sont fournis, alors isset()
renverra TRUE uniquement si tous les paramètres sont définis. L'évaluation se fait de gauche à droite et s'arrête dès qu'une variable non définie est rencontrée.
Si vous n'utilisez pas isset()
, le script générera un avertissement, avec isset()
vous pouvez éviter cela.
Un exemple raison d'utiliser isset()
est de détecter si une clé est présente dans un tableau.
par exemple:
1, 'hello' => NULL, 'pie' => array('a' => 'apple'));
var_dump(isset($a['test'])); // TRUE
var_dump(isset($a['foo'])); // FALSE
var_dump(isset($a['hello'])); // FALSE
// La clé 'hello' équivaut à NULL donc est considérée comme non définie
// Si vous souhaitez vérifier les valeurs de clé NULL, essayez:
var_dump(array_key_exists('hello', $a)); // TRUE
// Vérification de valeurs plus profondes dans le tableau
var_dump(isset($a['pie']['a'])); // TRUE
var_dump(isset($a['pie']['b'])); // FALSE
var_dump(isset($a['cake']['a']['b'])); // FALSE
if(!$a['hello']){ //cela affichera un avertissement: Variable indéfinie.
echo 'hello n'est pas défini dans le tableau';
}
?>
Le problème avec votre exemple est que l'opérateur !
en PHP est NON
, donc dans les deux lignes de code if ici vous obtiendrez le même résultat mais la première ligne affichera un avertissement de variable Indéfinie car il n'y a pas de variable $name
, le deuxième if fera le NON
à la variable $name