Comparaison non stricte des valeurs booléennes en PHP
Dans l'exemple précédent, j'ai utilisé pour la comparaison
l'opérateur ===. Dans ce cas, notre variable
était comparée à l'égalité de true
à la fois en valeur et en type.
Dans notre problème, on peut aussi utiliser l'opérateur
==. Si la variable test
contient toujours soit la valeur true
soit false, alors rien ne changera :
<?php
$test = true; // on écrit ici soit true, soit false
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
Mais si la variable $test peut
contenir n'importe quelle valeur, alors tout devient
beaucoup plus complexe. Dans un tel cas, si la variable
ne contient pas une valeur booléenne, cette valeur
sera d'abord convertie en booléen et seulement
ensuite sera comparée.
Supposons, par exemple, que notre variable contienne
le nombre 1. Dans ce cas, il sera d'abord
converti en type booléen, c'est-à-dire
en true. Et ensuite, la comparaison sera effectuée :
<?php
$test = 1;
if ($test == true) {
echo '+++'; // cela va s'exécuter, car 1 == true est correct
} else {
echo '---';
}
?>
Mais, par exemple, le nombre 0 se convertit
en false. Et notre condition sera par conséquent
fausse :
<?php
$test = 0;
if ($test == true) {
echo '+++';
} else {
echo '---'; // cela va s'exécuter, car 0 == true est incorrect
}
?>
Sans exécuter le code, déterminez ce qui sera affiché à l'écran :
<?php
$test = 1;
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
Sans exécuter le code, déterminez ce qui sera affiché à l'écran :
<?php
$test = 0;
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
Sans exécuter le code, déterminez ce qui sera affiché à l'écran :
<?php
$test = 1;
if ($test == false) {
echo '+++';
} else {
echo '---';
}
?>
Sans exécuter le code, déterminez ce qui sera affiché à l'écran :
<?php
$test = 1;
if ($test != true) {
echo '+++';
} else {
echo '---';
}
?>
Sans exécuter le code, déterminez ce qui sera affiché à l'écran :
<?php
$test = '';
if ($test == false) {
echo '+++';
} else {
echo '---';
}
?>
Sans exécuter le code, déterminez ce qui sera affiché à l'écran :
<?php
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>