Bonjour,
Affiche
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo "*".phpversion()."*".(false)."*B*".(true)."*C*";Comment expliquer ceci?
Code : Sélectionner tout - Visualiser dans une fenêtre à part *5.3.20**B*1*C*
Bonjour,
Affiche
Code : Sélectionner tout - Visualiser dans une fenêtre à part echo "*".phpversion()."*".(false)."*B*".(true)."*C*";Comment expliquer ceci?
Code : Sélectionner tout - Visualiser dans une fenêtre à part *5.3.20**B*1*C*
Bonjour,
L'explication est simple, true et false sont des mots clés. Lors d'une demande d'affichage de ces mots alors php indique les valeurs numérique 0 pour false et 1 pour true. Un type booléen est un type qui représente la vérité, afficher une telle définition n'est pas possible. Donc une norme cette norme a été appliqué.
Mais attention ceci ne veut pas dire que true est forcément égal à 1 ou false à 0. En gros c'est comme si l'affichage de ces mot-clés utilisaient automatiquement un cast numérique avec une règle prédéfinie de false // 0 et true // 1.
D'ailleurs tu peux t'en persuader car 1 === true // = false.
Merci pour ta réponse.
Mais je ne comprend pas bien.
Tu me dis, entre autres, que true n'est pas forcément égal à 1.
Et que false n'est pas forcément égal à 0.
Lorsque que echo affiche 1 pour true, je m'attend logiquement à voir 0 (ou -1 ou autre valeur à la limite).
Mais pas une chaîne vide pour un echo false (ou alors j'ai perdus toute logique).
Ou alors, il faut que je comprenne; si chaîne vide ça veut dire false, sinon c'est true.
Donc ma question pourrait être: est-on certain qu'une chaîne vide est forcément false ET DONC qu'une chaîne non vide est forcément égale à true?
Mis à part que true est égal à true ET false est égal à false,
on est sûr de quoi alors?
Il faut bien comprendre qu'il s'agit de conversion et non pas d'affichage de la variable réelle.
echo ne renvoit que des chaines de caractère, si tu demandes un echo d'une variable qui n'est pas une chaine de caractère, sa valeur est convertie en chaine de caractère pour son affichage.
Si tu veux voir la valeur réelle de la variable, il faut utiliser var_dump().
Ce n'est pas logique mais je n'ai pas trouvé la raison par contre.Une valeur booléenne TRUE est convertie en la chaîne "1". Une valeur booléenne FALSE est convertie en "" (une chaîne vide)
Du détail :
http://www.php.net/manual/fr/types.comparisons.php
Merci à vous deux.
Partager