Pour tester si une variable est vide, beaucoup trop souvent les jeunes développeurs s'arrêtent à la solution suivante :
if ($myVar=="")
echo 'ma variable est vide';
Alors qu'en réalité l'assertion $myVar=="" ne signifie pas du tout la variable $myVar est vide
mais la variable $myVar est une chaîne de caractères vide
.
On trouve ce genre d'assertion partout dans beaucoup de script. Pourtant qu'adviendrait il de notre script si $myVar avait une valeur à entier:0 dès le départ ?
$myVar = 0;
if ($myVar=="")
echo 'ma variable est vide';
Ou mieux, si $myVar était null ?
$myVar = null;
if ($myVar=="")
echo 'ma variable est vide';
Pourtant dans ce dernier cas, $myVar est réellement vide, puisqu'elle n'a aucune valeur. Mais l'assertion $myVar=="" ne se vérifie pas. Donc peut on considérer que $myVar=="" signifie que $myVar est une variable vide
?
Si vous souhaitez tester si une variable est vide
, utilisez plutôt la fonction empty() :
if (empty($myVar))
echo 'ma variable est vide';
Si vous considérez une chaîne de caractères composée seulement d'espace comme vide, vous pouvez alors utiliser la fonction trim() au préalable. Prenons un exemple concret trouvé dans le script qui m'a inspiré ce billet :
if ($nick != "" & $text != "" & $nick != " " & $text != " ") {}
Nous effacerons les espaces en début et fin de chaîne avec la fonction trim() avant de tester le résultat avec empty() dans une condition :
$nick = trim($nick, ' ');
$text = trim($text, ' ');
if (!empty($nick) & !empty($text)) {}