Cela dépend de ce que vous recherchez, si vous cherchez simplement à voir s'il est vide, utilisez simplement emptycar il vérifie s'il est également défini, si vous voulez savoir si quelque chose est défini ou non isset.
Empty vérifie si la variable est définie et si c'est le cas, vérifie qu'elle est nulle, "", 0, etc.
Isset vérifie simplement s'il est défini, il pourrait s'agir de quelque chose qui n'est pas nul
Avec empty, les éléments suivants sont considérés comme vides:
- "" (une chaîne vide)
- 0 (0 sous forme d'entier)
- 0,0 (0 comme flottant)
- "0" (0 sous forme de chaîne)
- NUL
- FAUX
- array () (un tableau vide)
- var $ var; (une variable déclarée, mais sans valeur dans une classe)
Depuis http://php.net/manual/en/function.empty.php
Comme mentionné dans les commentaires, l'absence d'avertissement est également importante avec empty ()
Manuel PHP dit
empty () est l'opposé de (boolean) var, sauf qu'aucun avertissement n'est généré lorsque la variable n'est pas définie .
Concernant isset
Manuel PHP dit
isset () retournera FALSE si vous testez une variable qui a été définie sur NULL
Votre code serait bien comme:
<?php
$var = '23';
if (!empty($var)){
echo 'not empty';
}else{
echo 'is not set or empty';
}
?>
Par exemple:
$var = "";
if(empty($var)) // true because "" is considered empty
{...}
if(isset($var)) //true because var is set
{...}
if(empty($otherVar)) //true because $otherVar is null
{...}
if(isset($otherVar)) //false because $otherVar is not set
{...}