Математические операции PHP имеют такой же
приоритет, как в обычной математике. То есть
в начале выполняется умножение и деление,
а потом уже сложение и вычитание. В следующем
примере вначале 2
умножится на 2
и затем к результату прибавится 3
:
<?php
$a = 2 * 2 + 3;
echo $a; // выведет 7 (результат 4 + 3)
?>
Не запуская код, определите, что выведется на экран:
<?php
$a = 5 + 5 * 3;
echo $a;
?>
Не запуская код, определите, что выведется на экран:
<?php
$a = 5 + 5 * 3 + 3;
echo $a;
?>
Не запуская код, определите, что выведется на экран:
<?php
$a = 8 / 2 + 2;
echo $a;
?>
Не запуская код, определите, что выведется на экран:
<?php
$a = 8 + 2 / 2;
echo $a;
?>
Равный приоритет
Умножение и деление имеют равный приоритет и выполняются по очереди слева направо. Рассмотрим на примере, что имеется ввиду. В следующем коде вначале выполнится деление, а потом умножение:
<?php
$a = 8 / 2 * 4;
echo $a; // выведет 16 (результат 4 * 4)
?>
Если же переставить знаки местами, то вначале выполнится умножение, а потом деление:
<?php
$a = 8 * 2 / 4;
echo $a; // выведет 4 (результат 16 / 4)
?>
В следующем примере каждая новая операция деления будет применяться к предыдущей:
<?php
$a = 16 / 2 / 2 / 2;
echo $a; // выведет 2
?>
Не запуская код, определите, что выведется на экран:
<?php
$a = 8 / 2 * 2;
echo $a;
?>
Не запуская код, определите, что выведется на экран:
<?php
$a = 8 * 4 / 2 / 2;
echo $a;
?>
Группирующие скобки
При желании вы можете указывать приоритет операций с помощью круглых скобок. Давайте, например, переделаем наш код так, чтобы вначале выполнилось сложение, а уже потом умножение:
<?php
$a = 2 * (2 + 3);
echo $a; // выведет 10 (результат 2 * 5)
?>
Скобок может быть любое количество, в том числе и вложенных друг в друга:
<?php
$a = 2 * (2 + 4 * (3 + 1));
echo $a;
?>
Не запуская код, определите, что выведется на экран:
<?php
$a = (2 + 3) * (2 + 3);
echo $a;
?>
Не запуская код, определите, что выведется на экран:
<?php
$a = (2 + 3) * 2 + 3;
echo $a;
?>
Не запуская код, определите, что выведется на экран:
<?php
$a = 2 * (2 + 4 * (3 + 1));
echo $a;
?>
Не запуская код, определите, что выведется на экран:
<?php
$a = 2 * 8 / 4;
echo $a;
?>
Нюансы группировки
В скобки можно заключить операции, обладающие приоритетом - это не будет ошибкой. Например, заключим в скобки произведение чисел:
<?php
$a = (2 * 2) + 3;
echo $a; // выведет 7 (результат 4 + 3)
?>
В данном случае скобки получаются лишними (у умножения ведь и так приоритет), но код является допустимым. Иногда такую группировку используют в тех местах, где приоритет операций не очевиден. Для примера рассмотрим следующий код:
<?php
$a = 8 / 2 * 4;
echo $a;
?>
Как вы уже знаете, в нем вначале выполнится деление, а потом умножение. Но с первого взгляда это может быть не слишком очевидно. Здесь можно использовать группирующие скобки, чтобы явно показать приоритет:
<?php
$a = (8 / 2) * 4;
echo $a;
?>
Не запуская код, определите, что выведется на экран:
<?php
$a = (2 * 8) / 4;
echo $a;
?>
Не запуская код, определите, что выведется на экран:
<?php
$a = 2 * (8 / 4);
echo $a;
?>