🎯 Цель урока
Научиться использовать операторы в 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: Создаем файл для практики
- В папке
php_courseсоздайте файлoperators.php - Откройте его в редакторе
- Напишите базовую структуру:
<!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 и выполните следующие задачи:
- Калькулятор площади и периметра:
- Создайте переменные для длины и ширины прямоугольника
- Вычислите площадь (длина × ширина)
- Вычислите периметр (2 × (длина + ширина))
- Выведите результаты красиво оформленными
- Конвертер температур:
- Создайте переменную с температурой в Цельсиях (например, 25)
- Переведите в Фаренгейты: °F = °C × 9/5 + 32
- Переведите в Кельвины: K = °C + 273.15
- Выведите все три значения
- Проверка возраста:
- Создайте переменную
$ageс любым возрастом - Сравните возраст с разными значениями: 18, 21, 65
- Используйте все операторы сравнения
- Выведите результаты через var_dump()
- Создайте переменную
- Счетчик дней до события:
- Создайте переменную
$days_left = 100 - Используйте декремент, чтобы показать убывание дней
- Выведите "Осталось X дней" 5 раз, уменьшая счетчик
- Создайте переменную
- Расчет чаевых в ресторане:
- Сумма счета: 2500 рублей
- Количество человек: 4
- Чаевые: 10% от суммы
- Вычислите: размер чаевых, общую сумму, сумму на человека
- Проверка делимости:
- Возьмите число 45
- Проверьте делится ли оно на 2, 3, 5, 10 без остатка
- Используйте оператор
% - Выведите результаты проверки
💡 Подсказки:
- Для округления используйте
round($number, 2)— округлит до 2 знаков - Не забывайте про порядок операций: умножение и деление выполняются раньше сложения
- Используйте
var_dump()для проверки типов данных - Добавьте стили, чтобы результаты были красиво оформлены
🧠 Проверка понимания
❓ Вопросы для самопроверки
- Чем отличается
==от===? - Что вернет выражение
10 % 3? - Что такое инкремент и декремент?
- В чем разница между
++$aи$a++? - Что выведет
echo 2 + 3 * 4? - Что такое оператор
**и для чего он используется? - Почему лучше использовать
===вместо==? - Как проверить, делится ли число нацело на другое число?
- Что вернет сравнение
5 > 3? - Можно ли использовать операторы с переменными разных типов?
🔗 Полезные ссылки
Официальная документация на русском языке
Интерактивные примеры с операторами
Простое объяснение на русском с примерами
🎉 Поздравляем!
Вы освоили операторы в PHP! Теперь вы можете выполнять вычисления, сравнивать значения и изменять переменные. На следующем уроке мы изучим условные операторы и научимся принимать решения в коде!
Комментарии
Комментариев пока нет. Будьте первым!