Логические значения и двойное равно
В предыдущем примере я использовал для сравнения оператор ===. В этом случае наша переменная сравнивалась на равенство true как по значению, так и по типу.
В нашей задаче можно использовать и оператор ==. Если в переменной test всегда будет одно из значений true или false, то ничего и не изменится:
<?php
$test = true; // тут пишем или true, или false
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
А вот если в переменную $test могут попадать любые значения, то все становится намного сложнее. В таком случае, если в переменной будет не булево значение, то это значение вначале будет преобразовано к булеву и только затем будет сравниваться.
Пусть, например, в нашей переменной будет число 1. В этом случае оно вначале преобразуется к логическому типу, то есть к true. И затем будет выполнено сравнение:
<?php
$test = 1;
if ($test == true) {
echo '+++'; // сработает это, тк 1 == true - это верно
} else {
echo '---';
}
?>
А вот, к примеру, число 0 преобразуется к false. И наше условие в результате будет ложным:
<?php
$test = 0;
if ($test == true) {
echo '+++';
} else {
echo '---'; // сработает это, тк 0 == true - это НЕверно
}
?>
№1
Не запуская код, определите, что выведется на экран:
<?php
$test = 1;
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
№2
Не запуская код, определите, что выведется на экран:
<?php
$test = 0;
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>
№3
Не запуская код, определите, что выведется на экран:
<?php
$test = 1;
if ($test == false) {
echo '+++';
} else {
echo '---';
}
?>
№4
Не запуская код, определите, что выведется на экран:
<?php
$test = 1;
if ($test != true) {
echo '+++';
} else {
echo '---';
}
?>
№5
Не запуская код, определите, что выведется на экран:
<?php
$test = '';
if ($test == false) {
echo '+++';
} else {
echo '---';
}
?>
№6
Не запуская код, определите, что выведется на экран:
<?php
if ($test == true) {
echo '+++';
} else {
echo '---';
}
?>