🎯 Цель урока

Научиться использовать операторы в PHP для выполнения математических расчетов, сравнения значений и изменения переменных. Понять разницу между разными типами операторов и научиться применять их на практике.

📚 Теоретическая часть (45 минут)

🧮 Что такое операторы? Простыми словами

Операторы — это специальные символы, которые говорят PHP, что делать с данными. Это как математические знаки в школе: плюс, минус, равно.

📝 Простой пример из жизни:

У вас есть 5 яблок, вам дали еще 3. Вы используете оператор сложения:

5 + 3 = 8

В PHP это будет:

$apples = 5 + 3; // $apples теперь равно 8

💡 Запомните: Операторы работают с переменными и значениями, возвращая результат. Этот результат можно сохранить в переменную или использовать сразу.

Арифметические операторы

Это операторы для математических вычислений. Такие же, как в калькуляторе!

Оператор Название Пример Результат
+ Сложение $a = 5 + 3; 8
- Вычитание $b = 10 - 4; 6
* Умножение $c = 7 * 2; 14
/ Деление $d = 20 / 4; 5
% Остаток от деления $e = 10 % 3; 1
** Возведение в степень $f = 2 ** 3; 8

🤔 Что такое остаток от деления?

Это то, что остается, когда число не делится нацело.

// Пример: 10 конфет делим на 3 детей
$candies = 10;
$children = 3;

$per_child = 10 / 3;  // 3.333... (каждому по 3)
$remaining = 10 % 3;  // 1 (остается 1 конфета)

// 10 ÷ 3 = 3 (и 1 в остатке)

📊 Практические примеры:

// Расчет площади комнаты
$width = 5;   // метров
$length = 4;  // метров
$area = $width * $length; // 20 квадратных метров

// Деление счета в кафе
$total_bill = 1200;  // рублей
$people = 4;
$per_person = $total_bill / $people; // 300 рублей

// Проверка четности числа
$number = 17;
$remainder = $number % 2; // 1 - нечетное, 0 - четное

⚖️ Операторы сравнения

Эти операторы сравнивают два значения и возвращают true (правда) или false (ложь).

Оператор Название Пример Когда true?
== Равно 5 == 5 Значения равны
=== Строго равно 5 === "5" Значения И типы равны
!= или <> Не равно 5 != 3 Значения не равны
!== Строго не равно 5 !== "5" Значения ИЛИ типы не равны
> Больше 10 > 5 Левое больше правого
< Меньше 3 < 7 Левое меньше правого
>= Больше или равно 5 >= 5 Левое больше или равно
<= Меньше или равно 4 <= 6 Левое меньше или равно

⚠️ Важно: == vs ===

В чем разница между == и ===?

❌ == (нестрогое)
$a = 5;
$b = "5";

var_dump($a == $b);
// true (сравнивает только значения)

Проверяет только значения, игнорируя тип

✅ === (строгое)
$a = 5;
$b = "5";

var_dump($a === $b);
// false (разные типы!)

Проверяет и значение, и тип данных

💡 Рекомендация: Всегда используйте === и !== для точных сравнений. Это защитит от неожиданных ошибок!

📊 Практические примеры:

// Проверка возраста для входа
$age = 16;
$can_enter = $age >= 18; // false

// Проверка пароля
$password = "secret123";
$input = "secret123";
$is_correct = $password === $input; // true

// Сравнение цен
$price1 = 1000;
$price2 = 1200;
$is_cheaper = $price1 < $price2; // true

🔄 Инкремент и декремент

Специальные операторы для увеличения или уменьшения значения на 1. Очень удобны для счетчиков!

📈 Инкремент (увеличение на 1)

Оператор Название Когда выполняется Пример
++$a Пре-инкремент Сначала увеличивает, потом использует $a = 5; echo ++$a; // 6
$a++ Пост-инкремент Сначала использует, потом увеличивает $a = 5; echo $a++; // 5

📉 Декремент (уменьшение на 1)

Оператор Название Когда выполняется Пример
--$b Пре-декремент Сначала уменьшает, потом использует $b = 10; echo --$b; // 9
$b-- Пост-декремент Сначала использует, потом уменьшает $b = 10; echo $b--; // 10

🤔 Разбираем на примерах:

// ПРЕ-инкремент (сначала +1, потом вывод)
$counter = 5;
echo ++$counter; // Выведет: 6
echo $counter;   // Выведет: 6

// ПОСТ-инкремент (сначала вывод, потом +1)
$counter = 5;
echo $counter++; // Выведет: 5
echo $counter;   // Выведет: 6

// Практическое применение
$attempts = 3;
echo "Осталось попыток: " . $attempts--; // 3
echo "Осталось попыток: " . $attempts;   // 2

💡 Простое правило:

  • ++$a — плюсик перед переменной = увеличить перед использованием
  • $a++ — плюсик после переменной = увеличить после использования

💻 Практическая часть (1.5 часа)

Шаг 1: Создаем файл для практики

  1. В папке php_course создайте файл operators.php
  2. Откройте его в редакторе
  3. Напишите базовую структуру:
    <!DOCTYPE html>
    <html>
    <head>
    <title>Операторы в PHP</title>
    <style>
    body { 
        font-family: Arial; 
        padding: 20px; 
        background: #f5f5f5;
    }
    .result { 
        background: white; 
        padding: 15px; 
        margin: 10px 0; 
        border-left: 4px solid #667eea;
        border-radius: 5px;
    }
    .title {
        background: #667eea;
        color: white;
        padding: 10px 15px;
        border-radius: 5px;
        margin: 20px 0 10px 0;
    }
    code {
        background: #f1f5f9;
        padding: 2px 6px;
        border-radius: 3px;
        color: #e83e8c;
    }
    </style>
    </head>
    <body>
    <h1>🧮 Операторы в PHP</h1>
    <?php
    // Здесь будем писать код
    ?>
    </body>
    </html>

Шаг 2: Арифметические операторы

Создадим две переменные и проведем все математические операции:

<?php
echo "<div class='title'>➕ Арифметические операторы</div>";

// Создаем переменные
$a = 10;
$b = 3;

echo "<div class='result'>";
echo "<p>Переменная a = <strong>$a</strong></p>";
echo "<p>Переменная b = <strong>$b</strong></p>";
echo "</div>";

// Сложение
$sum = $a + $b;
echo "<div class='result'>";
echo "<p>✅ Сложение: $a + $b = <strong>$sum</strong></p>";
echo "</div>";

// Вычитание
$diff = $a - $b;
echo "<div class='result'>";
echo "<p>➖ Вычитание: $a - $b = <strong>$diff</strong></p>";
echo "</div>";

// Умножение
$product = $a * $b;
echo "<div class='result'>";
echo "<p>✖️ Умножение: $a * $b = <strong>$product</strong></p>";
echo "</div>";

// Деление
$quotient = $a / $b;
echo "<div class='result'>";
echo "<p>➗ Деление: $a / $b = <strong>$quotient</strong></p>";
echo "</div>";

// Остаток от деления
$remainder = $a % $b;
echo "<div class='result'>";
echo "<p>🔢 Остаток от деления: $a % $b = <strong>$remainder</strong></p>";
echo "<p style='color: #666;'>(10 ÷ 3 = 3 и $remainder в остатке)</p>";
echo "</div>";

// Возведение в степень
$power = $a ** $b;
echo "<div class='result'>";
echo "<p>📊 Возведение в степень: $a ** $b = <strong>$power</strong></p>";
echo "<p style='color: #666;'>($a × $a × $a = $power)</p>";
echo "</div>";

// Специальный пример: разница между == и ===
echo "<div class='title'>🔍 Важно: == vs ===</div>";

$number = 5;
$string = "5";

echo "<div class='result'>";
echo "<p>Число: <code>\$number = $number</code> (тип: ";
var_dump($number);
echo ")</p>";
echo "<p>Строка: <code>\$string = \"$string\"</code> (тип: ";
var_dump($string);
echo ")</p>";
echo "</div>";

echo "<div class='result'>";
echo "<p>Нестрогое сравнение (==):</p>";
var_dump($number == $string);
echo "<p style='color: #48bb78;'>✅ true - значения одинаковые (5 и \"5\")</p>";
echo "</div>";

echo "<div class='result'>";
echo "<p>Строгое сравнение (===):</p>";
var_dump($number === $string);
echo "<p style='color: #f56565;'>❌ false - типы разные (int и string)</p>";
echo "</div>";
?>

Шаг 4: Инкремент и декремент

Поэкспериментируем с увеличением и уменьшением значений:

<?php
echo "<div class='title'>🔄 Инкремент и декремент</div>";

// Пре-инкремент
echo "<div class='result'>";
echo "<h4>📈 Пре-инкремент (++\$counter)</h4>";
$counter = 5;
echo "<p>Начальное значение: <strong>$counter</strong></p>";
echo "<p>Вывод ++\$counter: <strong>" . (++$counter) . "</strong></p>";
echo "<p>Значение после: <strong>$counter</strong></p>";
echo "<p style='color: #666;'>💡 Сначала увеличил до 6, потом вывел</p>";
echo "</div>";

// Пост-инкремент
echo "<div class='result'>";
echo "<h4>📈 Пост-инкремент (\$counter++)</h4>";
$counter = 5;
echo "<p>Начальное значение: <strong>$counter</strong></p>";
echo "<p>Вывод \$counter++: <strong>" . ($counter++) . "</strong></p>";
echo "<p>Значение после: <strong>$counter</strong></p>";
echo "<p style='color: #666;'>💡 Сначала вывел 5, потом увеличил до 6</p>";
echo "</div>";

// Пре-декремент
echo "<div class='result'>";
echo "<h4>📉 Пре-декремент (--\$counter)</h4>";
$counter = 10;
echo "<p>Начальное значение: <strong>$counter</strong></p>";
echo "<p>Вывод --\$counter: <strong>" . (--$counter) . "</strong></p>";
echo "<p>Значение после: <strong>$counter</strong></p>";
echo "<p style='color: #666;'>💡 Сначала уменьшил до 9, потом вывел</p>";
echo "</div>";

// Пост-декремент
echo "<div class='result'>";
echo "<h4>📉 Пост-декремент (\$counter--)</h4>";
$counter = 10;
echo "<p>Начальное значение: <strong>$counter</strong></p>";
echo "<p>Вывод \$counter--: <strong>" . ($counter--) . "</strong></p>";
echo "<p>Значение после: <strong>$counter</strong></p>";
echo "<p style='color: #666;'>💡 Сначала вывел 10, потом уменьшил до 9</p>";
echo "</div>";

// Практический пример
echo "<div class='result'>";
echo "<h4>🎮 Практический пример: Счетчик попыток</h4>";
$attempts = 3;
echo "<p>Игра началась! Попыток: <strong>$attempts</strong></p>";
echo "<p>Попытка 1... Осталось: <strong>" . (--$attempts) . "</strong></p>";
echo "<p>Попытка 2... Осталось: <strong>" . (--$attempts) . "</strong></p>";
echo "<p>Попытка 3... Осталось: <strong>" . (--$attempts) . "</strong></p>";
echo "<p style='color: #f56565;'>❌ Игра окончена!</p>";
echo "</div>";
?>

Шаг 5: Практические задачи

Теперь решим реальные задачи с использованием операторов:

<?php
echo "<div class='title'>💼 Практические задачи</div>";

// Задача 1: Магазин
echo "<div class='result'>";
echo "<h4>🛒 Задача 1: Расчет скидки в магазине</h4>";

$original_price = 5000;  // рублей
$discount_percent = 15;   // процентов

$discount_amount = $original_price * $discount_percent / 100;
$final_price = $original_price - $discount_amount;
$savings = $discount_amount;

echo "<p>Начальная цена: <strong>$original_price руб</strong></p>";
echo "<p>Скидка: <strong>$discount_percent%</strong></p>";
echo "<p>Размер скидки: <strong>$discount_amount руб</strong></p>";
echo "<p style='color: #48bb78; font-size: 1.2em;'>💰 Итоговая цена: <strong>$final_price руб</strong></p>";
echo "<p>Вы экономите: <strong>$savings руб</strong></p>";
echo "</div>";

// Задача 2: Конвертер валют
echo "<div class='result'>";
echo "<h4>💱 Задача 2: Конвертер валют</h4>";

$rubles = 10000;
$exchange_rate = 95.5;  // курс доллара

$dollars = $rubles / $exchange_rate;
$dollars_rounded = round($dollars, 2);

echo "<p>Рубли: <strong>$rubles руб</strong></p>";
echo "<p>Курс доллара: <strong>$exchange_rate руб</strong></p>";
echo "<p style='color: #48bb78;'>💵 Доллары: <strong>$dollars_rounded</strong></p>";
echo "</div>";

// Задача 3: Проверка четности
echo "<div class='result'>";
echo "<h4>🔢 Задача 3: Четное или нечетное число?</h4>";

$test_number = 17;
$remainder = $test_number % 2;

echo "<p>Проверяем число: <strong>$test_number</strong></p>";
echo "<p>Остаток от деления на 2: <strong>$remainder</strong></p>";

if ($remainder === 0) {
    echo "<p style='color: #48bb78;'>✅ Число четное!</p>";
} else {
    echo "<p style='color: #ed8936;'>⚠️ Число нечетное!</p>";
}
echo "</div>";

// Задача 4: Деление пиццы
echo "<div class='result'>";
echo "<h4>🍕 Задача 4: Деление пиццы на друзей</h4>";

$pizza_slices = 16;
$friends = 5;

$slices_per_friend = floor($pizza_slices / $friends);
$remaining_slices = $pizza_slices % $friends;

echo "<p>Всего кусочков: <strong>$pizza_slices</strong></p>";
echo "<p>Количество друзей: <strong>$friends</strong></p>";
echo "<p style='color: #48bb78;'>👥 Каждому по: <strong>$slices_per_friend кусочков</strong></p>";
echo "<p style='color: #ed8936;'>🍕 Останется: <strong>$remaining_slices кусочков</strong></p>";
echo "</div>";

// Задача 5: Сравнение оценок
echo "<div class='result'>";
echo "<h4>📊 Задача 5: Сравнение результатов тестов</h4>";

$test1_score = 85;
$test2_score = 92;
$passing_score = 70;

echo "<p>Результат теста 1: <strong>$test1_score баллов</strong></p>";
echo "<p>Результат теста 2: <strong>$test2_score баллов</strong></p>";
echo "<p>Проходной балл: <strong>$passing_score</strong></p>";
echo "<hr>";

$test1_passed = $test1_score >= $passing_score;
$test2_passed = $test2_score >= $passing_score;
$improved = $test2_score > $test1_score;

echo "<p>Тест 1 сдан: ";
var_dump($test1_passed);
echo "</p>";

echo "<p>Тест 2 сдан: ";
var_dump($test2_passed);
echo "</p>";

echo "<p>Результат улучшился: ";
var_dump($improved);
echo "</p>";

if ($improved) {
    $improvement = $test2_score - $test1_score;
    echo "<p style='color: #48bb78;'>🎉 Прогресс: +$improvement баллов!</p>";
}
echo "</div>";
?>

🧪 Эксперименты

Попробуйте изменить код и посмотреть, что будет:

Эксперимент 1: Деление на ноль

<?php
// Что произойдет?
$result = 10 / 0;
echo $result; // Warning: Division by zero
?>

⚠️ PHP выдаст предупреждение о делении на ноль!

Эксперимент 2: Порядок операций

<?php
// Какой результат?
$result1 = 2 + 3 * 4;     // 14 (сначала умножение)
$result2 = (2 + 3) * 4;   // 20 (сначала скобки)

echo "Без скобок: $result1<br>";
echo "Со скобками: $result2";
?>

💡 Используйте скобки для контроля порядка вычислений!

Эксперимент 3: Смешанные типы

<?php
$a = "10";  // строка
$b = 5;     // число

$result = $a + $b;  // Что получится?
var_dump($result);  // int(15)

// PHP автоматически преобразовал строку в число!
?>

🤔 PHP умный! Он сам преобразует типы при необходимости.

Эксперимент 4: Цепочка инкрементов

<?php
$x = 5;
echo $x++;  // Выведет: 5
echo $x++;  // Выведет: 6
echo $x++;  // Выведет: 7
echo $x;    // Выведет: 8

// Каждый раз сначала выводит, потом увеличивает
?>

📋 Домашнее задание

✏️ Задание на день 3

Создайте файл homework_day3.php и выполните следующие задачи:

  1. Калькулятор площади и периметра:
    • Создайте переменные для длины и ширины прямоугольника
    • Вычислите площадь (длина × ширина)
    • Вычислите периметр (2 × (длина + ширина))
    • Выведите результаты красиво оформленными
  2. Конвертер температур:
    • Создайте переменную с температурой в Цельсиях (например, 25)
    • Переведите в Фаренгейты: °F = °C × 9/5 + 32
    • Переведите в Кельвины: K = °C + 273.15
    • Выведите все три значения
  3. Проверка возраста:
    • Создайте переменную $age с любым возрастом
    • Сравните возраст с разными значениями: 18, 21, 65
    • Используйте все операторы сравнения
    • Выведите результаты через var_dump()
  4. Счетчик дней до события:
    • Создайте переменную $days_left = 100
    • Используйте декремент, чтобы показать убывание дней
    • Выведите "Осталось X дней" 5 раз, уменьшая счетчик
  5. Расчет чаевых в ресторане:
    • Сумма счета: 2500 рублей
    • Количество человек: 4
    • Чаевые: 10% от суммы
    • Вычислите: размер чаевых, общую сумму, сумму на человека
  6. Проверка делимости:
    • Возьмите число 45
    • Проверьте делится ли оно на 2, 3, 5, 10 без остатка
    • Используйте оператор %
    • Выведите результаты проверки

💡 Подсказки:

  • Для округления используйте round($number, 2) — округлит до 2 знаков
  • Не забывайте про порядок операций: умножение и деление выполняются раньше сложения
  • Используйте var_dump() для проверки типов данных
  • Добавьте стили, чтобы результаты были красиво оформлены

🧠 Проверка понимания

Вопросы для самопроверки

  1. Чем отличается == от ===?
  2. Что вернет выражение 10 % 3?
  3. Что такое инкремент и декремент?
  4. В чем разница между ++$a и $a++?
  5. Что выведет echo 2 + 3 * 4?
  6. Что такое оператор ** и для чего он используется?
  7. Почему лучше использовать === вместо ==?
  8. Как проверить, делится ли число нацело на другое число?
  9. Что вернет сравнение 5 > 3?
  10. Можно ли использовать операторы с переменными разных типов?

🔗 Полезные ссылки

Операторы PHP

Официальная документация на русском языке

PHP Operators Tutorial

Интерактивные примеры с операторами

Операторы для начинающих

Простое объяснение на русском с примерами

🎉 Поздравляем!

Вы освоили операторы в PHP! Теперь вы можете выполнять вычисления, сравнивать значения и изменять переменные. На следующем уроке мы изучим условные операторы и научимся принимать решения в коде!