Я писал небольшую программу, когда столкнулся с чем-то странным.
Если бы я хотел, чтобы 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
Кто-нибудь может объяснить, почему это происходит?
от ссылка на сайт Марк Бейкер, вы можете видеть, что
Сложение, вычитание и конкатенация строк имеют одинаковый приоритет!
в echo "$a + $b = ".$a + $b."<br>"; //15
Объединить первый строковый литерал и значение
$a
, а затем неявно преобразовать это число (10), чтобы вы могли добавить$b
затем конкатенируйте последний строковый литерал.
когда вы помещаете это в скобки, сложение обрабатывается как число (15), поэтому никаких математических операций со строкой
Других решений пока нет …