Пусть у нас есть какая-то булева переменная,
которая может принимать значения true
или false
:
<?php
$test = true;
?>
Давайте напишем if
, проверяющий нашу
переменную на значение true
:
<?php
$test = true;
if ($test === true) {
echo '+';
} else {
echo '-';
}
?>
Проверьте то, что переменная $test
равна true
.
Проверьте то, что переменная $test
равна false
.
Логические значения и двойное равно
В предыдущем примере я использовал для сравнения
оператор ===
. В этом случае наша переменная
сравнивалась на равенство 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
test;
if (test == true) {
echo '+';
} else {
echo '-';
}
?>
Сокращенный иф
Пусть, к примеру, мы хотим узнать, равна
ли переменная $test
значению true
.
В этом случае конструкцию if
можно
записать так:
<?php
$test = true;
if ($test == true) {
echo '+';
} else {
echo '-';
}
?>
При программировании такие проверки требуются
очень часто, поэтому для них существует более
изящная сокращенная форма: вместо if ($test
== true)
можно написать просто if
($test)
.
Давайте перепишем наш код в сокращенной форме:
<?php
$test = true;
if ($test) { // эквивалентно if ($test == true)
echo '+';
} else {
echo '-';
}
?>
Пусть теперь мы проверяем на то, что переменная
$test
не равна true
:
<?php
$test = true;
if ($test != true) {
echo '+';
} else {
echo '-';
}
?>
В этом случае сокращенный синтаксис будет выглядеть так:
<?php
$test = true;
if (!$test) { // используем логическое НЕ
echo '+';
} else {
echo '-';
}
?>
Аналогичное сокращение существует и для проверки
на false
. Пусть дан вот такой код:
<?php
$test = true;
if ($test == false) {
echo '+';
} else {
echo '-';
}
?>
Условие $test == false
на самом деле
все равно, что $test != true
:
<?php
$test = true;
if ($test != true) { // эквивалентно if ($test == false)
echo '+';
} else {
echo '-';
}
?>
Ну, а такое условие мы уже научились сокращать в предыдущем примере. Сократим:
<?php
$test = true;
if (!$test) {
echo '+';
} else {
echo '-';
}
?>
Перепишите следующий код с использованием сокращенного сравнения:
<?php
$test = true;
if ($test == true) {
echo '+';
} else {
echo '-';
}
?>
Перепишите следующий код с использованием сокращенного сравнения:
<?php
$test = true;
if ($test == false) {
echo '+';
} else {
echo '-';
}
?>
Перепишите следующий код с использованием сокращенного сравнения:
<?php
$test = true;
if ($test != true) {
echo '+';
} else {
echo '-';
}
?>
Перепишите следующий код с использованием сокращенного сравнения:
<?php
$test = true;
if ($test != false) {
echo '+';
} else {
echo '-';
}
?>
Нюанс
Учтите, что в сокращенных операциях сравнение
идет по ==
, а не по ===
.
Не запуская код, определите, что выведется на экран:
<?php
$test = 3;
if ($test) {
echo '+';
} else {
echo '-';
}
?>
Не запуская код, определите, что выведется на экран:
<?php
$test = 'abc';
if ($test) {
echo '+';
} else {
echo '-';
}
?>
Не запуская код, определите, что выведется на экран:
<?php
$test = '';
if ($test) {
echo '+';
} else {
echo '-';
}
?>
Не запуская код, определите, что выведется на экран:
<?php
$test = 3 * 'abc';
if ($test) {
echo '+';
} else {
echo '-';
}
?>
Не запуская код, определите, что выведется на экран:
<?php
$test = null;
if ($test) {
echo '+';
} else {
echo '-';
}
?>
Не запуская код, определите, что выведется на экран:
<?php
$test = false;
if ($test) {
echo '+';
} else {
echo '-';
}
?>
Не запуская код, определите, что выведется на экран:
<?php
$test;
if ($test) {
echo '+';
} else {
echo '-';
}
?>
Не запуская код, определите, что выведется на экран:
<?php
$test = 0;
if ($test) {
echo '+';
} else {
echo '-';
}
?>
Не запуская код, определите, что выведется на экран:
<?php
$test = '0';
if ($test) {
echo '+';
} else {
echo '-';
}
?>
Не запуская код, определите, что выведется на экран:
<?php
$test = -1;
if ($test) {
echo '+';
} else {
echo '-';
}
?>