Почему вы должны добавлять скобки к операциям + - при объединении?


Я писал небольшую программу, когда столкнулся с чем-то странным. Если бы я хотел, чтобы PHP представлял арифметические операции сложения или вычитания с помощью оператора echo и результата операции, мне пришлось бы добавить круглые скобки, иначе на html-странице не была бы представлена операция, а только результат.

Ниже приведен сокращенный пример.

Первый случай (без скобок):

$a = 10;
$b = 5;
echo "$a + $b = ".$a + $b."<br>"; // 15
echo "$a - $b = ".$a - $b."<br>"; // 5
echo "$a * $b = ".$a * $b."<br>"; // 10 * 5 = 50
echo "$a / $b = ".$a / $b."<br>"; // 10 / 5 = 2
echo "$a % $b = ".$a % $b."<br>"; // 10 % 5 = 0

Второй случай (со скобками):

$a = 10;
$b = 5;
echo "$a + $b = ".($a + $b)."<br>"; // 10 + 5 = 15
echo "$a - $b = ".($a - $b)."<br>"; // 10 - 5 = 5
echo "$a * $b = ".($a * $b)."<br>"; // 10 * 5 = 50
echo "$a / $b = ".($a / $b)."<br>"; // 10 / 5 = 2
echo "$a % $b = ".($a % $b)."<br>"; // 10 % 5 = 0

Может ли кто-нибудь объяснить, почему это происходит?

Author: Jon Surrell, 2016-02-02

1 answers

Из ссылки Марка Бейкера вы можете видеть, что

Сложение, вычитание и объединение строк имеют одинаковый приоритет!

В echo "$a + $b = ".$a + $b."<br>"; //15

Объедините первый строковый литерал и значение $a, затем неявно преобразуйте его в число (10), чтобы вы могли добавить к нему $b, затем объедините последний строковый литерал.

Когда вы заключаете его в скобки, сложение рассматривается как число(15), поэтому никаких математических операции со строкой

 4
Author: Pepo_rasta, 2016-02-02 11:36:58