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)
?>Без скобок && вычисляется перед ||. Однако использование скобок делает ваш код легче для чтения и предотвращает ошибки. При комбинировании операторов всегда группируйте условия логически, чтобы точно выразить то, что вы имеете в виду.
Задание
ЛегкоПрочитайте четыре значения из ввода: целое число 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
Шпаргалка
Оператор 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. Проверьте, может ли человек комфортно выйти на улицу
?>В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Comparison & Logical Operators
Comparison OperatorsEquality & IdentityLogical Operators Part 1Logical Operators Part 2Recap - Simple Logic2Variables and Data Types
NumbersStrings and QuotesBooleansNaming ConventionsRecap - Variable InitEmpty VariablesString ConcatenationGetting User InputCast to Different Types5Conditional Logic
If StatementIf - ElseThe Ternary OperatorNull Coalescing OperatorSwitch StatementRecap - Making Decisions3Basic Operators
Arithmetic OperatorsModulo OperatorExponentiation OperatorCombined AssignmentIncrement/DecrementOperator PrecedenceRecap - Simple CalculationsString Operators