Le point d'exclamation

Mammouth du PHP | 686 Messages

15 avr. 2008, 19:29

Je voudrai savoir si lorsque l'on met un point d'exclamation à une variable cela signifie bien l'inverse de ce qu'il y a dedans
par exemple :
if (!file_exists($filename)) 
veut bien dire "si le fichier n'existe pas ?

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

15 avr. 2008, 20:06

! retourne l'inverse du booléen qu'il précéde.

Dès qu'une fonction, ou un groupe de fonction retourne une valeur équivalente à true, ! retourne false, et vice versa
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 686 Messages

15 avr. 2008, 20:09

d'accord, donc quand on met un ! c'est pour signifier l'inverse

ViPHP
ViPHP | 4674 Messages

15 avr. 2008, 23:35

Hey :),

attention, zeus a bien précisé sur un booléen. L'inverse d'une chaîne ou d'un entier va te donner des choses très bizarre (voire même une erreur si c'est bien fait, je te laisse tester).

!true te donne false
!false te donne true
et seulement dans ces cas là. Donc si ta fonction ou méthode te retourne un booléen, tu peux utiliser le point d'exclamation, sinon tu oublies ;-) (ou te débrouilles pour avoir un booléen).
« Un handicap est le résultat d'une rencontre entre une déficience ou différence et une incapacité de la société à répondre à celle-ci. »

Hoa : http://hoa-project.net (sur @hoaproject).

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

16 avr. 2008, 08:00

En sachant que, en PHP, les valeurs suivantes sont considéré comme false
  • Le booléen FALSE lui-même
  • L' entier 0 (zéro)
  • La chaîne de caractères 0.0 (zéro)
  • La chaîne de caractères vide et la chaîne de caractères "0"
  • Le tableau vide (aucun élément)
  • L' objet vide (aucun élément) (PHP 4 uniquement)
  • Le type spécial NULL
Le reste étant considéré comme true.

par exemple
var_dump( !'' ); // affiche true
Mais c'est, selon moi, une mauvaise idée que de se baser là dessus ;)
Rien de mieux que les comparaison strictes :D
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer