Elementor Header #8

47. Логические операторы

1. Введение

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

2. Основные логические операторы

PHP поддерживает несколько логических операторов, которые позволяют выполнять логические операции над булевыми значениями и выражениями. Рассмотрим основные логические операторы.

2.1 Оператор AND (&&)

Оператор AND возвращает true, если оба операнда истинны.

Пример:

				
					<?php
$a = true;
$b = false;

if ($a && $b) {
    echo "Both are true.";
} else {
    echo "At least one is false."; // Вывод: At least one is false.
}
?>

				
			

2.2 Оператор OR (||)

Оператор OR возвращает true, если хотя бы один из операндов истинен.

Пример:

				
					<?php
$a = true;
$b = false;

if ($a || $b) {
    echo "At least one is true."; // Вывод: At least one is true.
} else {
    echo "Both are false.";
}
?>

				
			

2.3 Оператор XOR

Оператор XOR возвращает true, если только один из операндов истинен, но не оба.

Пример:

				
					<?php
$a = true;
$b = false;

if ($a xor $b) {
    echo "Only one is true."; // Вывод: Only one is true.
} else {
    echo "Either both are true or both are false.";
}
?>

				
			

2.4 Оператор NOT (!)

Оператор NOT инвертирует логическое значение операнда. Если операнд истинный, то NOT делает его ложным и наоборот.

Пример:

				
					<?php
$a = true;

if (!$a) {
    echo "The value is false.";
} else {
    echo "The value is true."; // Вывод: The value is true.
}
?>

				
			

3. Приоритет логических операторов

При использовании нескольких логических операторов в одном выражении важно учитывать их приоритет, чтобы избежать ошибок.

  • ! (NOT) имеет наивысший приоритет.
  • && (AND) имеет средний приоритет.
  • || (OR) имеет низкий приоритет.
  • xor имеет приоритет ниже && и ||.

Пример:

				
					<?php
$a = true;
$b = false;
$c = true;

if ($a && ($b || $c)) {
    echo "Condition is true."; // Вывод: Condition is true.
} else {
    echo "Condition is false.";
}
?>

				
			

В этом примере выражение в скобках будет оценено первым из-за их приоритета.

4. Комбинирование логических операторов

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

Пример:

				
					<?php
$x = 10;
$y = 20;
$z = 30;

if (($x < $y && $y < $z) || $z == 30) {
    echo "Condition is true."; // Вывод: Condition is true.
} else {
    echo "Condition is false.";
}
?>

				
			

Здесь используются как &&, так и || для создания сложного логического выражения.

5. Распространённые ошибки

5.1 Ошибка: Неправильный приоритет операторов

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

Пример ошибки:

				
					<?php
$a = true;
$b = false;
$c = true;

if ($a || $b && $c) {
    echo "Condition is true."; // Вывод: Condition is true.
} else {
    echo "Condition is false.";
}
?>

				
			

Решение: Используйте скобки для явного указания порядка выполнения.

				
					<?php
if ($a || ($b && $c)) {
    echo "Condition is true.";
}
?>

				
			

5.2 Ошибка: Неправильное использование xor

Оператор xor может быть ошибочно принят за exclusive or в математике, что приводит к неверным результатам.

Пример ошибки:

				
					<?php
$a = true;
$b = true;

if ($a xor $b) {
    echo "Only one is true.";
} else {
    echo "Either both are true or both are false."; // Вывод: Either both are true or both are false.
}
?>

				
			

Решение: Понимание логики xor и её отличие от обычного or.

Заключение

Логические операторы в PHP предоставляют мощные инструменты для выполнения проверок и управления потоком выполнения программ. Понимание их работы и приоритета позволяет создавать более точные и надёжные условия.

6. Тестовое задание

Для закрепления материала выполните следующее задание:

  1. Напишите код, который проверяет, является ли число положительным и чётным. Используйте логические операторы для выполнения этой проверки.

  2. Создайте функцию isEligible, которая принимает возраст и статус студента. Возвращайте true, если возраст больше 18 лет или если статус студента равен true.

  3. Реализуйте функцию evaluateConditions, которая принимает три булевых значения. Функция должна возвращать true, если хотя бы одно из значений истинно, но не все одновременно.

Пример выполнения задания:

				
					<?php
// 1. Проверка на положительное и чётное число
$number = 10;
if ($number > 0 && $number % 2 == 0) {
    echo "The number is positive and even.";
} else {
    echo "The number is either negative or odd.";
}

// 2. Функция isEligible
function isEligible($age, $isStudent) {
    return $age > 18 || $isStudent;
}

echo isEligible(20, false) ? 'Eligible' : 'Not Eligible'; // Вывод: Eligible
echo isEligible(17, true) ? 'Eligible' : 'Not Eligible'; // Вывод: Eligible

// 3. Функция evaluateConditions
function evaluateConditions($a, $b, $c) {
    return ($a || $b || $c) && !($a && $b && $c);
}

echo evaluateConditions(true, false, true) ? 'Condition met' : 'Condition not met'; // Вывод: Condition met
?>

				
			

Удачи в выполнении задания и дальнейшем изучении PHP!

logo