202 votes

Double Not (!!) Opérateur en PHP

Est-ce que quelqu'un sait ce que fait l'opérateur double not en PHP, par exemple:

 return !! $row;
 

Que ferait le code ci-dessus?

309voto

Theo Points 60103

Ce n'est pas la "double pas d'opérateur", c'est le pas de l'opérateur appliqué deux fois. Le droit ! entraînera une valeur de type boolean, indépendamment de l'opérande. Puis le gauche ! nierez que booléenne.

Cela signifie que pour toute valeur réelle (nombre autre que zéro, non-vide chaînes et des tableaux, etc.) vous obtiendrez la valeur booléenne TRUE, et pour toute valeur false (0, 0.0, NULL, les chaînes vides ou des tableaux vides), vous obtiendrez la valeur booléenne FALSE.

Il est fonctionnellement équivalent à un casting pour boolean.

53voto

viraptor Points 12779

C'est la même chose (ou presque la même chose - il pourrait y avoir un cas de coin) que le casting pour bool. Si $row transforme en vrai, alors !! $row est également vrai.

Mais si vous voulez atteindre (bool) $row , vous devriez probablement utiliser juste cela - et pas des expressions "intéressantes";)

19voto

YOU Points 44812

Sa moyenne si $row a une valeur, elle retournera true sinon false , convertissant en valeur booléenne.

7voto

Steve Bennett Points 4273

"not not" est un moyen pratique dans de nombreuses langues pour comprendre quelle valeur de vérité la langue attribue au résultat de toute expression. Par exemple en Python:

 >>> not not []
False
>>> not not [False]
True
 

Cela peut être pratique dans les endroits où vous voulez réduire une valeur complexe à quelque chose comme "y a-t-il une valeur du tout".

Prograide.com

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.

Powered by:

X