8768 sujets

Développement web côté serveur, CMS

Bonjour à vous tous,

Je suis maintenant dans la section intermédiaire du PHP et j'attaque le chapitre des bases de données.

Je rencontre mon premier obstacle avec les valeurs booléennes. Mes cours ne s'y attardent que le temps d'une seule page et je n'ai pas compris à quoi cela sert.

La définition dit qu'une valeur booléenne peut prendre la valeur 1 (vrai) ou la valeur 0 (faux). Mais que signifie 1 ou 0 (à quoi cela correspond) et que signifie vrai ou faux ?

J'ai ce exemple sur mes cours :


$var1 = true;
echo $var;

le résultat à l'écran est le renvoi du chiffre 1.

Et si on affecte :


$var2 = false;
echo $var2;

le résultat à l'écran est que rien ne s'affiche mais je m'attendais à ce qu'il affiche 0.

Je ne comprends pas ! A quoi correspond le chiffre 1 ? Et pourquoi l'echo de $var2 n'affiche pas 0 ?

Mon cours donne aussi un exemple d'utilisation de la structure conditionnelle if() pour afficher à quoi correspond la valeur booléenne utilisée.


if($var == true){
		echo 'la valeur est vrai';
	}else{
		echo 'la valeur est fausse';
	}

Vous avez peut être des liens web qui expliquent mieux le rôle des valeurs booléennes ou alors vous mêmes saurez m'expliquer efficacement ce que c'est et à quoi elles servent. N'oubliez pas que je suis débutant dans le développement PHP et que c'est la première fois que je suis confronté aux valeurs booléennes.

Merci pour votre aide.
Modifié par ObiJuanKenobi (13 May 2022 - 06:27)
Eh bien, les valeurs true et false permettent des blocs conditionnels dans le code.

L’expression 2 + 2 == 4 aura la valeur true, alors que 2 + 2 == 5 aura la valeur false. Dans ton exemple, tu peux écrire simplement if ($var) au lieu de if ($var == true), c’est la même chose puisque ce qui importe pour un if, c’est la valeur booléenne de l’expression entre parenthèses.

Si tu veux afficher la valeur booléenne d’une variable $var, tu peux plutôt écrire echo $var ? 'vrai' : 'faux';.
Modifié par Anedja (13 May 2022 - 08:55)
Salut

Si le echo false ne t'affiche rien c'est normal parce que false sera transformé en une chaine de caractere avant d'etre affiché et false est équivalent à une chaine vide
Désolé mais je ne comprends toujours pas.

Quand on écrit :


$var = true;
echo $var;

Le navigateur renvoie 1, OK mais que représente 1 ? 1 voiture, 1 avion, 1 pomme, 1 poussière, etc. A quoi correspond ce 1 et à quoi correspond 0 quand on écrit false à la place de true ?

Ce n'est pas du concret pour moi, c'est du subjectif. Voilà pourquoi je n'arrive pas à assimiler les valeurs booléennes.
Ce n’est pas subjectif, c’est la valeur de vérité d’une proposition : vrai ou faux. La proposition « 2 + 2 = 4 » est vraie, et cette valeur « vrai » est représentée numériquement par un 1. La proposition « 2 + 2 = 5 » est fausse, et cette valeur « faux » est représentée numériquement par un 0.

Ainsi, si tu écris $var = (2 + 2 == 4);, tu crées une variable booléenne $var ayant pour valeur « vrai », qui se représente numériquement par un 1.

Quand tu fais la commande echo $var;, P.H.P. traduit ta variable booléenne en chaine de caractères pour pouvoir l’afficher. Tous les langages de programmation ne le font pas de la même façon, mais P.H.P. traduit la valeur booléenne « faux » par une chaine de caractères vide, et la valeur booléenne « vrai » par la chaine de caractères « 1 ».

1 n’est évidemment pas à comprendre comme un nombre de choses (cardinal) ni comme un numéro (ordinal) mais juste comme une représentation numérique de « vrai » dans l’ensemble binaire {vrai ; faux}.
Modifié par Anedja (13 May 2022 - 15:41)
OK j'ai compris. Mon erreur était que je cherchais une explication mathématique du résultat (du genre 2 vaches + 2 vaches = 4 vaches) alors que, comme tu dis, c'est à considérer comme une valeur binaire vrai ou faux (est-ce que 2 vaches + 2 vaches = 4 vaches, oui c'est vrai).

Et j'ai compris aussi que le navigateur renvoie 1 quand la valeur est TRUE, pour signifier qu'elle est vrai, et ne renvoie rien quand la valeur est FALSE pour signifier qu'il n'y a rien. 1 étant la chaîne de caractère pour TRUE et pour FALSE il n'y a aucune chaîne de caractère.

Merci Anedja pour cette explication claire et net.