Y a-t-il une différence entre isset
y !empty
. Si je fais cette double vérification booléenne, est-ce correct de cette manière ou redondant ? et existe-t-il une manière plus courte de faire la même chose ?
isset($vars[1]) AND !empty($vars[1])
Y a-t-il une différence entre isset
y !empty
. Si je fais cette double vérification booléenne, est-ce correct de cette manière ou redondant ? et existe-t-il une manière plus courte de faire la même chose ?
isset($vars[1]) AND !empty($vars[1])
C'est complètement redondant. empty
est plus ou moins un raccourci pour !isset($foo) || !$foo
y !empty
est analogue à isset($foo) && $foo
. I.e. empty
fait la chose inverse de isset
plus un contrôle supplémentaire pour le véracité d'une valeur.
Ou en d'autres termes, empty
est la même chose que !$foo
mais n'envoie pas d'avertissement si la variable n'existe pas. C'est l'objectif principal de cette fonction : effectuer une comparaison booléenne sans se préoccuper de l'existence de la variable.
Le manuel le dit comme ça :
empty()
est le contraire de(boolean) var
, sauf qu'aucun avertissement n'est généré lorsque la variable n'est pas définie.
Vous pouvez simplement utiliser !empty($vars[1])
ici.
@karim IMO empty
est l'une des fonctions les plus méconnues de PHP. Le petit bout de phrase "aucun avertissement n'est généré" est très facile à ignorer. J'ai dû moi-même parcourir la documentation plusieurs fois pour le repérer et le poster ici.
isset()
teste si une variable est définie et non nulle :
http://us.php.net/manual/en/function.isset.php
empty()
peut renvoyer la réponse vraie lorsque la variable prend certaines valeurs :
http://us.php.net/manual/en/function.empty.php
Pour le démontrer, essayez le code suivant avec $the_var non assignée, définie à 0, et définie à 1.
<?php
#$the_var = 0;
if (isset($the_var)) {
echo "set";
} else {
echo "not set";
}
echo "\n";
if (empty($the_var)) {
echo "empty";
} else {
echo "not empty";
}
?>
Empty vérifie simplement si la variable/le tableau référencé a une valeur si vous vérifiez le paramètre php doc(empty) vous verrez que ces choses sont considérées comme emtpy
* "" (an empty string) * 0 (0 as an integer) * "0" (0 as a string) * NULL * FALSE * array() (an empty array) * var $var; (a variable declared, but without a value in a class)
alors que isset vérifie si la variable est isset et non nulle, ce qui peut également être trouvé dans le fichier php doc(isset)
"Empty" : ne fonctionne que sur les variables. Empty peut signifier différentes choses pour différents types de variables (consultez le manuel : http://php.net/manual/en/function.empty.php ).
"isset" : vérifie si la variable existe et recherche une valeur vraie NULL ou fausse. Peut être désactivée en appelant "unset". Encore une fois, consultez le manuel.
L'utilisation de l'un ou l'autre dépend du type de variable que vous utilisez.
Je dirais qu'il est plus sûr de vérifier les deux, car vous vérifiez d'abord si la variable existe, et si elle n'est pas vraiment NULL ou vide.
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.
3 votes
Il y a un beau tableau sur les résultats de leur utilisation avec différents types de variables (ils ont des différences) ici : virendrachandak.com/demos/php-isset-vs-empty-vs-is_null.php
0 votes
Les compléments exacts évidents sont isset et is_null, mais !empty en couvre plusieurs autres. Tout dépend du type de données que vous testez.