False et 0 en php
Résolu
Stargirlfr
Messages postés
1175
Date d'inscription
Statut
Membre
Dernière intervention
-
Dynamix Messages postés 202 Date d'inscription Statut Membre Dernière intervention -
Dynamix Messages postés 202 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Le php est un drôle de langage, et, comme je débute, je souhaiterais comprendre pourquoi :
1. "false" == 0 est vrai
2. false == 0 est vrai
mais
3. "false" == false est faux ?
Pour la 1ère expression, pourquoi la chaîne de caractère "false" est-elle nulle ?
Pour la 2ème expression, je comprends bien que le type booléen false est égal à 0.
Pour la 3ème et dernière expression, je crois comprendre que la chaîne de caractère "false" n'est pas false car elle contient justement quelque chose.
Est-ce bien cela ?
De plus, que signifie l'expression 1e1 ?
Pourquoi avons-nous : "1e1" == "10" et "1e1" === "10" de vraies ?
Merci d'avance !
Le php est un drôle de langage, et, comme je débute, je souhaiterais comprendre pourquoi :
1. "false" == 0 est vrai
2. false == 0 est vrai
mais
3. "false" == false est faux ?
Pour la 1ère expression, pourquoi la chaîne de caractère "false" est-elle nulle ?
Pour la 2ème expression, je comprends bien que le type booléen false est égal à 0.
Pour la 3ème et dernière expression, je crois comprendre que la chaîne de caractère "false" n'est pas false car elle contient justement quelque chose.
Est-ce bien cela ?
De plus, que signifie l'expression 1e1 ?
Pourquoi avons-nous : "1e1" == "10" et "1e1" === "10" de vraies ?
Merci d'avance !
A voir également:
- Php false 0
- Easy php - Télécharger - Divers Web & Internet
- Remettre a 0 un pc - Guide
- Numéro de téléphone excel 0 - Guide
- 0 barré clavier ✓ - Forum Programmation
- Excel différent de 0 ✓ - Forum Excel
9 réponses
Ton post m'a intrigué et j'ai fait une petite recherche sur le manuel de PHP.
Tu devrais trouver tes réponses ici :
https://www.php.net/manual/fr/language.types.boolean.php
https://www.php.net/manual/fr/language.types.string.php
Tu devrais trouver tes réponses ici :
https://www.php.net/manual/fr/language.types.boolean.php
https://www.php.net/manual/fr/language.types.string.php
Merci pour ton aide. Mais, je ne crois pas avoir tout compris.
Je comprends que :
L'entier 0 est considéré comme false. Donc,
2) 0 == false est true.
Mais la chaîne de caractère "false" n'est pas considéré comme false car non vide...
Donc, comment expliquer que "false" == 0 est vrai, mais que "false" == false est faux... ?
Sinon, peux-tu me dire ce à quoi correspond 1e1 ?
Encore merci !
Je comprends que :
L'entier 0 est considéré comme false. Donc,
2) 0 == false est true.
Mais la chaîne de caractère "false" n'est pas considéré comme false car non vide...
Donc, comment expliquer que "false" == 0 est vrai, mais que "false" == false est faux... ?
Sinon, peux-tu me dire ce à quoi correspond 1e1 ?
Encore merci !
Tu as tout expliqué dans le manuel, ce qui correspond à tes falses c'est dans la partie boolean et "1e1" dans la partie chaînes de caractères.
false == 0 est vrai en effet et pour tous les autres chiffres false == chiffre est faux.
"false" == false est vrai car tout simplement seule la chaîne vide est fausse.
Et pour "false" == 0 je suppose que simplement tu compares la chaîne à un chiffre donc c'est faux.
Après pour le "1e1" c'est tout simple 1e1 en mathématique ça fait 10.
Les chaînes de caractères, exprimées dans un contexte mathématique sont converties en chiffre-nombres (lire le manuel parce que je suis pas sûr à 100% de ce que j'avance...)
As-tu vraiment lu le manuel? Car tu as tout d'expliqué, et exactement ce que tu veux.
false == 0 est vrai en effet et pour tous les autres chiffres false == chiffre est faux.
"false" == false est vrai car tout simplement seule la chaîne vide est fausse.
Et pour "false" == 0 je suppose que simplement tu compares la chaîne à un chiffre donc c'est faux.
Après pour le "1e1" c'est tout simple 1e1 en mathématique ça fait 10.
Les chaînes de caractères, exprimées dans un contexte mathématique sont converties en chiffre-nombres (lire le manuel parce que je suis pas sûr à 100% de ce que j'avance...)
As-tu vraiment lu le manuel? Car tu as tout d'expliqué, et exactement ce que tu veux.
Je te remercie de te pencher sur mon problème ! Mais, je ne suis pas d'accord avec toi... =/
En fait, en codant les hypothèses, je trouve les résultats suivants (me serais-je trompée ?) :
1°) false == 0 : VRAI car le booléen 0 est considéré comme false et false == false. --> OK
2°) "false" == 0 : VRAI ... et ça, je ne sais pas pourquoi --> ???
3°) "false" == false : FAUX. Je suppose que c'est parce que la chaîne de caractères "false" est non vide (seule la chaîne vide : "" ou 0 est considérée comme false). --> OK
Donc, ce que je ne comprends pas, c'est pourquoi la chaîne de caractère "false", qui n'est donc pas vide, est égale à l'entier 0...
Sinon, pour ma 2ème question, je trouve les résultats suivants :
1°) "1e1" == "10" est VRAI : car la valeur de la chaîne de caractères "1e1" est égale à 10.
2°) "1e1" === "10" est FAUX : car la chaîne de caractères "1e1" n'est pas égale à la chaîne de caractères 10.
En fait, en codant les hypothèses, je trouve les résultats suivants (me serais-je trompée ?) :
1°) false == 0 : VRAI car le booléen 0 est considéré comme false et false == false. --> OK
2°) "false" == 0 : VRAI ... et ça, je ne sais pas pourquoi --> ???
3°) "false" == false : FAUX. Je suppose que c'est parce que la chaîne de caractères "false" est non vide (seule la chaîne vide : "" ou 0 est considérée comme false). --> OK
Donc, ce que je ne comprends pas, c'est pourquoi la chaîne de caractère "false", qui n'est donc pas vide, est égale à l'entier 0...
Sinon, pour ma 2ème question, je trouve les résultats suivants :
1°) "1e1" == "10" est VRAI : car la valeur de la chaîne de caractères "1e1" est égale à 10.
2°) "1e1" === "10" est FAUX : car la chaîne de caractères "1e1" n'est pas égale à la chaîne de caractères 10.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
C'est censé faire quoi === ? (jamais vu)
"false" == 0 : VRAI ... et ça, je ne sais pas pourquoi --> ???
Pardon j'avais mal lu...
Je suppose que dans ce contexte "false" est convertie en false?
"false" == 0 : VRAI ... et ça, je ne sais pas pourquoi --> ???
Pardon j'avais mal lu...
Je suppose que dans ce contexte "false" est convertie en false?
En fait, l'égalité == ne compare que la valeur, alors que celle === compare la valeur ET le type.
Donc, là, je suppose que ce n'est pas égale avec === car 1e1 n'est pas équivalent à 10 (alors qu'avec == c'est vraie car 1e1=10). Je ne sais pas si c'est très clair, mais c'est comme ça que je le comprends !
Pour "false" == 0, si "false" est converti en false, alors, on devrait avoir "false" == false vrai, or c'est faux...
D'où ma question...
Qu'est-ce que c'est compliqué ^^ !!
Donc, là, je suppose que ce n'est pas égale avec === car 1e1 n'est pas équivalent à 10 (alors qu'avec == c'est vraie car 1e1=10). Je ne sais pas si c'est très clair, mais c'est comme ça que je le comprends !
Pour "false" == 0, si "false" est converti en false, alors, on devrait avoir "false" == false vrai, or c'est faux...
D'où ma question...
Qu'est-ce que c'est compliqué ^^ !!
Tu l'as dit...
dans "false" == 0 il est converti et dans "false" == false car ce n'est pas le même contexte?
A prendre au conditionnel...
Pour "1e1" === "10" égal faux ça me semble correct du coup.
Je connaissais pas === j'ai appris un truc aujourd'hui :)
dans "false" == 0 il est converti et dans "false" == false car ce n'est pas le même contexte?
A prendre au conditionnel...
Pour "1e1" === "10" égal faux ça me semble correct du coup.
Je connaissais pas === j'ai appris un truc aujourd'hui :)
J'ai trouvé la réponse à cet endroit (réponse de papyphp) :
https://www.developpez.net/forums/d201902/php/langage/tableaux-string-booleen-abheration/
En fait, php transforme les variables pour pouvoir les comparer.
Dans le cas de l'expression "false" == 0, la chaine de caractères "false" est transformée par php en entier, et prend la valeur de 0. Donc, l'expression est vraie !
Pour false == 0, l'entier 0 est considéré comme booléen égale à false.
Quant à la 3ème expression, "false" == false : celle là est fausse car la chaîne de caractère false n'est pas équivalente au booléen false !
Encore merci Dynamix de t'être penché sur mon problème ! Bonne continuation !
https://www.developpez.net/forums/d201902/php/langage/tableaux-string-booleen-abheration/
En fait, php transforme les variables pour pouvoir les comparer.
Dans le cas de l'expression "false" == 0, la chaine de caractères "false" est transformée par php en entier, et prend la valeur de 0. Donc, l'expression est vraie !
Pour false == 0, l'entier 0 est considéré comme booléen égale à false.
Quant à la 3ème expression, "false" == false : celle là est fausse car la chaîne de caractère false n'est pas équivalente au booléen false !
Encore merci Dynamix de t'être penché sur mon problème ! Bonne continuation !