Логические значения и двойное равно в 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 '---';
}
?>