empty()
doit accéder à la valeur par référence (afin de vérifier si cette référence pointe vers quelque chose qui existe), et PHP avant 5.5 ne supportait pas les références aux valeurs temporaires retournées par les fonctions.
Cependant, le véritable problème que vous avez est que vous utilisez empty()
du tout, croyant à tort que la valeur "vide" est différente de la valeur "fausse".
Empty est juste un alias pour !isset($thing) || !$thing
. Lorsque la chose que vous vérifiez existe toujours (en PHP, les résultats des appels de fonction existent toujours), la fonction empty()
La fonction est rien d'autre qu'un opérateur de négation .
PHP n'a pas le concept de vide . Les valeurs qui évaluent à false sont vides, les valeurs qui évaluent à true sont non vides. C'est la même chose. Ce code :
$x = something();
if (empty($x)) …
et ceci :
$x = something();
if (!$x) …
a toujours le même résultat, dans tous les cas, pour tous les types de données (parce que $x
est défini empty()
est redondant).
La valeur de retour de la méthode existe toujours (même si vous ne disposez pas de return
la valeur de retour existe et contient null
). Par conséquent :
if (!empty($r->getError()))
est logiquement équivalent à :
if ($r->getError())
2 votes
Probablement qu'en PHP 5.5, vous serez autorisé à passer des expressions à la fonction
empty
: wiki.php.net/rfc/empty_isset_exprs2 votes
Le guide définitif de l'isset et du empty de PHP
0 votes
Ok je trouve Réponse de porneL correct aussi ceci mon code
if ( !$e->find('div') )
qui vérifie si l'élément HTML DOM actuel est vide ou non. Je l'utilise à l'intérieur d'une boucle pour imprimer un seul Div sans Div interne à l'intérieur.