Je pense que le code suivant devrait fonctionner, mais il ne fonctionne pas (Modifié: fonctionne maintenant en PHP 5.5+) :
if (!empty($r->getError()))
Où getError()
est tout simplement:
public function getError()
{
return $this->error;
}
Pourtant, je me retrouve avec cette erreur:
ne peut pas utiliser la valeur de retour de la méthode dans le contexte d'écriture
Qu'est-ce que ça veut dire? N'est-ce pas juste une lecture?
empty
: wiki.php.net/rfc/empty_isset_exprsif ( !$e->find('div') )
qui vérifie si l'élément HTML DOM actuel est vide ou non. Je l'utilise à l'intérieur de la boucle pour imprimer uniquement un seul Div sans Div interne à l'intérieur.Réponses:
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 renvoyées par les fonctions.Cependant, le vrai problème que vous avez est que vous l'utilisez
empty()
du tout, croyant à tort que la valeur "vide" est différente de "fausse".Vide n'est qu'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), laempty()
fonction n'est rien d'autre qu'un opérateur de négation .PHP n'a pas de concept de vide . Les valeurs évaluées à false sont vides, les valeurs évaluées à true ne sont pas vides. C'est la même chose. Ce code:
et ça:
a toujours le même résultat, dans tous les cas, pour tous les types de données (car
$x
est définiempty()
est redondant).La valeur de retour de la méthode existe toujours (même si vous n'avez pas d'
return
instruction, la valeur de retour existe et contientnull
). Donc:est logiquement équivalent à:
la source
(boolean) var
, sauf qu'aucun avertissement n'est généré lorsque la variable n'est pas définie."""
,0
etc. sont « vides », mais pas nul.C'est une limitation de empty () dans les versions PHP inférieures à 5.5.
Il faudrait changer pour ça
la source
isset()
. c'est-à-dire:isset($this->foo->getBar())
entraînera le même problème.Selon les documents PHP :
Vous ne pouvez pas utiliser
empty()
directement la valeur de retour d'une fonction. Au lieu de cela, définissez le retour degetError()
sur une variable et exécutez-empty()
la.la source
Je crée généralement une fonction globale appelée is_empty () juste pour contourner ce problème
Ensuite, n'importe où j'aurais normalement utilisé empty () J'utilise simplement is_empty ()
la source
!
opérateur pour cela? :)Comme souligné par d'autres, c'est une limitation (étrange) de empty ().
Pour la plupart des purproses, faire cela équivaut à appeler vide, mais cela fonctionne:
la source
empty()
couvre bien plus de possibilités qu'une simple chaîne viergeLe problème est le suivant, vous voulez savoir si l'erreur n'est pas vide.
L'ajout d'une méthode isErrorSet () résoudra le problème.
Maintenant, cela fonctionnera bien avec ce code sans préavis.
la source
L'autre façon de vérifier si un tableau est vide pourrait être:
Cela fonctionne pour moi sans cette erreur
la source