/
Программирование
/
Курс PHP
/

Приоритет операций

PHP: Приоритет операций

Рассмотрим простое выражение:

<?php

print_r(2 + 2 * 2); // => 6

Результат равен 6, а не 8. Это объясняется понятием приоритета операций в математике и программировании. Он определяет порядок, в котором выполняются действия:

  • Умножение и деление выполняются раньше сложения и вычитания.
  • Возведение в степень (**) имеет еще более высокий приоритет.
Приоритет операций (от высокого к низкому):

  **         возведение в степень
   ↓
  * / %      умножение, деление, остаток
   ↓
  + -        сложение, вычитание

Например:

<?php

print_r(2 * 2 ** 3); // => 16, потому что сначала 2 ** 3 = 8, затем 8 * 2 = 16

Если рядом идут операции с одинаковым приоритетом, они выполняются слева направо:

<?php

print_r(8 / 2 * 3); // => 12, потому что сначала 8 / 2 = 4, затем 4 * 3 = 12

Управление порядком действий

Иногда нужно изменить порядок вычислений. Для этого используются круглые скобки. Они позволяют задать, какие действия нужно выполнить в первую очередь:

<?php

print_r((2 + 2) * 2); // => 8

Скобки можно ставить вокруг любой части выражения и вкладывать их друг в друга:

<?php

print_r(3 ** (4 - 2));                   // => 9
print_r(7 * 3 + (4 / 2) - (8 + (2 - 1))); // => 14

Главное правило: всегда закрывайте скобки. Непарные скобки вызывают ошибки: и новички, и опытные программисты иногда забывают про закрывающую скобку.

Пишите скобки сразу парой. Например, вводите () и потом заполняйте внутреннюю часть. Большинство редакторов кода (в том числе наш) автоматически добавляют закрывающую скобку, как только вы пишете открывающую. Это касается и других парных символов, например, кавычек.

Повышаем читаемость

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

<?php

// Было
print_r(8 / 2 + 5 - -3 / 2);       // => 10.5

// Стало
print_r(((8 / 2) + 5) - (-3 / 2)); // => 10.5

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

Задание

Вы с 4 друзьями (итого 5 человек) заказали 2 пиццы по 300 рублей и 4 напитка по 50 рублей. Нужно разделить счет поровну.

Запишите программу из одной строки с print_r(), расставив скобки так, чтобы сначала посчиталась общая сумма, а затем делилась на всех:

без скобок:   2 * 300 + 4 * 50 / 5  =  640  ← неверно
со скобками:  (2 * 300 + 4 * 50) / 5  =  160  ← верно

Полезное

Команда проекта находится в телеграм-сообществе. Там можно задать любой вопрос и повлиять на проект

Нашли ошибку? Есть что добавить? Пулреквесты приветствуются