Логические операторы. Часть 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)
?>Без скобок && вычисляется перед ||. Однако использование скобок делает ваш код легче для чтения и предотвращает ошибки. При комбинировании операторов всегда группируйте условия логически, чтобы точно выразить то, что вы имеете в виду.
Задание
ЛегкоПрочитайте четыре значения из ввода: целое число temperature, строку isRaining (либо "true", либо "false"), строку hasUmbrella (либо "true", либо "false") и строку hasRaincoat (либо "true", либо "false").
Преобразуйте строковые значения в булевы, сравнивая их с "true".
Оцените следующие три условия и выведите результат каждого с помощью var_dump(), каждое на новой строке:
- Проверьте, НЕ идет ли дождь (используйте оператор
!) - Проверьте, должен ли человек остаться внутри: идет дождь И у него нет ни зонта, ни дождевика (используйте
!с обоими предметами) - Проверьте, может ли человек комфортно выйти на улицу: температура не менее 15 И (не идет дождь ИЛИ у него есть зонт или дождевик)
Пример:
Если входные данные 20, true, false и true, то вывод должен быть:
bool(false)
bool(false)
bool(true)Пояснение:
!isRaining→ !true → falseisRaining && !hasUmbrella && !hasRaincoat→ true && true && false → falsetemperature >= 15 && (!isRaining || hasUmbrella || hasRaincoat)→ true && (false || false || true) → true && true → 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. Проверьте, может ли человек комфортно выйти на улицу
?>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы сравнения и логические операторы
Операторы сравненияРавенство и идентичностьЛогические операторы. Часть 1Логические операторы. Часть 2Повторение — простая логика2Переменные и типы данных
ЧислаСтроки и кавычкиБулевы значенияСоглашения об именованииПовторение — инициализация переменныхПустые переменныеКонкатенация строкПолучение пользовательского вводаПриведение к другим типам5Условная логика
Оператор ifIf — ElseТернарный операторОператор нулевого слиянияОператор switchПовторение: принятие решений3Основные операторы
Арифметические операторыОператор остатка от деленияОператор возведения в степеньСоставное присваиваниеИнкремент/декрементПриоритет операторовПовторение — простые вычисленияОператоры строкПотренируйтесь самостоятельно: Онлайн-компилятор PHP