Как показывает руководство PHP, следующие операторы имеют одинаковый приоритет (левая ассоциативность):
* / %
Итак, это значит:
echo 2 / 5 * 3
должен отображать 7,5! потому что умножение будет выполнено первым, 5 * 3 = 15
тогда частное будет разделено на 2.
Но когда я запускаю этот код, PHP-код выводит 1.2!
Может ли кто-нибудь, пожалуйста, понять, что происходит?
Есть порядок выполнения арифметических операций. который называют коротким PEMDAS
()
— скобки/
— отклонение*
— умножение+
— добавлять-
— минЭто будет(2 / 5 * 3
) выполнять в выше порядок
Так что здесь происходит 2 / 5 * 3
2/5
знак равно 0,40.4*3
знак равно 1.2Чтобы выполнить ваше требование
5 * 3
знак равно 1515 / 2
знак равно 7,5Так что вы должны сделать (5 * 3) / 2
или же 2 / (5 * 3)
Тот же приоритет означает, что все будет происходить слева направо.
Это означает, что он не будет размножаться первым. Порядок, в котором * / %
было написано в руководстве не имеет значения.
Кроме того, по вашей логике вы должны получать 1. (3), но это не главное.
Это слева направо
2/5 = 0,4
0,4 * 3 = 1,2
Как вы можете видеть здесь: http://php.net/manual/en/language.operators.precedence.php
оператор * / и% имеют одинаковый приоритет. * имеет тот же приоритет, что и /.