3 votes

Pourquoi une personne voudrait-elle utiliser isset plutôt que simplement !$variableName

Je me demandais pourquoi quelqu'un voudrait utiliser la fonction isset plutôt que simplement le ! pour dire qu'une variable n'est pas définie ou inexistante.

Par exemple:

Est-ce qu'ils ne seraient pas tous les deux écho? On m'a dit que l'utilisation de isset est meilleure mais je ne comprends pas pourquoi. Quelqu'un peut expliquer?

3voto

altafhussain Points 2099

Si nous utilisons directement $variableName et que $variableName n'est pas défini avant cette vérification, alors un avertissement de variable indéfinie sera généré par php. Si nous utilisons isset, alors si la variable est définie avant, alors isset renverra vrai, si elle n'est pas définie alors isset renverra faux, et donc aucun avertissement de Variable ou index indéfini ne sera généré.

Il est conseillé d'utiliser isset avec les variables s'il arrive qu'elles ne soient pas définies au préalable.

1voto

deceze Points 200115

Si une variable n'existe pas et que vous essayez d'y accéder, cela générera un avertissement :

if ($foo) ... // E_NOTICE: Undefined variable foo

La valeur de cette variable inexistante est null donc le résultat est le même, cela signifie que la condition if ne sera pas satisfaite et le code ne s'exécutera pas, mais vous obtiendrez cet avertissement vous informant d'un potentiel problème (ce qui est le cas).

Vous utilisez isset pour tester si une variable existe sans déclencher une erreur. Vous ne devriez utiliser cela que pour les variables pour lesquelles vous n'êtes pas vraiment sûr. Si une variable devrait être définie à un moment donné dans votre code, vous n'avez pas besoin de isset ; vous voulez plutôt un avertissement si une variable n'existe pas alors qu'elle le devrait.

1voto

tpb Points 1083

Valeurs non définies

Si $name n'est pas défini, le premier if affichera un avertissement et renverra false. ( E_NOTICE )

Le deuxième if fonctionnera normalement et renverra false.

Valeurs booléennes

Si $name est true, seul le deuxième if affichera l'echo.

if(!$name){
    echo 'Name is not set';
}

if(isset($name) == false){
    echo 'Returned false';
}

Ainsi, isset est plus cohérent avec ce que vous souhaitez récupérer de cette condition. Vous voulez simplement savoir si $name a une valeur définie ou non.

Valeurs entières

Si $name est 0, le premier if affichera que le nom n'est pas défini, mais le deuxième if renverra true, car la variable $name est définie. Donc plus de cohérence.

Conclusion

isset est meilleur car il fait exactement ce que vous souhaitez récupérer et ce que vous souhaitez.

-1voto

One Man Crew Points 5078

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X