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

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