Логические значения и двойное равно в PHP

В предыдущем примере я использовал для сравнения оператор ===. В этом случае наша переменная сравнивалась на равенство 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 - это НЕверно } ?>

Не запуская код, определите, что выведется на экран:

<?php $test = 1; if ($test == true) { echo '+++'; } else { echo '---'; } ?>

Не запуская код, определите, что выведется на экран:

<?php $test = 0; if ($test == true) { echo '+++'; } else { echo '---'; } ?>

Не запуская код, определите, что выведется на экран:

<?php $test = 1; if ($test == false) { echo '+++'; } else { echo '---'; } ?>

Не запуская код, определите, что выведется на экран:

<?php $test = 1; if ($test != true) { echo '+++'; } else { echo '---'; } ?>

Не запуская код, определите, что выведется на экран:

<?php $test = ''; if ($test == false) { echo '+++'; } else { echo '---'; } ?>

Не запуская код, определите, что выведется на экран:

<?php if ($test == true) { echo '+++'; } else { echo '---'; } ?>



Чат с GPT Компилятор