Menu
Coddy logo textTech

Logical Operators Part 2

Часть раздела Основы путешествия по PHP на Coddy — урок 26 из 71.

Оператор NOT (!) изменяет булево значение на противоположное. Если что-то является true, оно становится false, и наоборот:

<?php
$isLoggedIn = false;

$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(true)

$isLoggedIn = true;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(false)
?>

Вы можете объединять несколько логических операторов в одном выражении. При этом используйте круглые скобки, чтобы четко выразить свои намерения:

<?php
$age = 25;
$hasTicket = true;
$isVIP = false;

// Can enter if: has ticket AND (is adult OR is VIP)
$canEnter = $hasTicket && ($age >= 18 || $isVIP);
var_dump($canEnter); // bool(true)
?>

Без скобок && вычисляется перед ||. Однако использование скобок делает ваш код легче для чтения и предотвращает ошибки. При комбинировании операторов всегда группируйте условия логически, чтобы точно выразить то, что вы имеете в виду.

challenge icon

Задание

Легко

Прочитайте четыре значения из ввода: целое число temperature, строку isRaining (либо "true", либо "false"), строку hasUmbrella (либо "true", либо "false") и строку hasRaincoat (либо "true", либо "false").

Преобразуйте строковые значения в булевы, сравнивая их с "true".

Оцените следующие три условия и выведите результат каждого с помощью var_dump(), каждое на новой строке:

  1. Проверьте, НЕ идет ли дождь (используйте оператор !)
  2. Проверьте, должен ли человек остаться внутри: идет дождь И у него нет ни зонта, ни дождевика (используйте ! с обоими предметами)
  3. Проверьте, может ли человек комфортно выйти на улицу: температура не менее 15 И (не идет дождь ИЛИ у него есть зонт или дождевик)

Пример:

Если входные данные 20, true, false и true, то вывод должен быть:

bool(false)
bool(false)
bool(true)

Пояснение:

  • !isRaining → !true → false
  • isRaining && !hasUmbrella && !hasRaincoat → true && true && false → false
  • temperature >= 15 && (!isRaining || hasUmbrella || hasRaincoat) → true && (false || false || true) → true && true → true

Шпаргалка

Оператор NOT (!) инвертирует логическое значение на противоположное:

<?php
$isLoggedIn = false;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(true)

$isLoggedIn = true;
$showLoginButton = !$isLoggedIn;
var_dump($showLoginButton); // bool(false)
?>

Вы можете комбинировать несколько логических операторов в одном выражении. Используйте скобки, чтобы сделать свои намерения ясными:

<?php
$age = 25;
$hasTicket = true;
$isVIP = false;

// Can enter if: has ticket AND (is adult OR is VIP)
$canEnter = $hasTicket && ($age >= 18 || $isVIP);
var_dump($canEnter); // bool(true)
?>

Без скобок && вычисляется раньше, чем ||. Однако использование скобок делает ваш код легче для чтения и предотвращает ошибки.

Попробуйте сами

<?php
// Читаем входные значения
$temperature = intval(fgets(STDIN));
$isRainingStr = trim(fgets(STDIN));
$hasUmbrellaStr = trim(fgets(STDIN));
$hasRaincoatStr = trim(fgets(STDIN));

// TODO: Преобразуйте строковые значения в булевы, сравнивая их с "true"


// TODO: Оцените и выведите три условия с помощью var_dump():
// 1. Проверьте, НЕ идет ли дождь
// 2. Проверьте, должен ли человек остаться внутри (дождь И нет зонта И нет дождевика)
// 3. Проверьте, может ли человек комфортно выйти на улицу

?>
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы