Не получать конкретный результат без брекетов

пожалуйста, объясните мне, почему я не получаю весь вывод со следующей строкой:

echo"$x+$y=".$x+$y."</br>"; 

Я получал только распечатку добавления без печати строки. Но выход отлично с этим утверждением:

 echo"$x+$y=".($x+$y)."</br>"; 

Спасибо.

    Приоритет 101 оператора . операторы имеют одинаковый приоритет и ассоциативность слева направо, поэтому без фигурных скобок операции оцениваются слева направо.

    Рассмотрим этот пример, который я адаптировал из кода вашего вопроса:

     $x = 3; $y = 5; echo "$x+$y=" . $x + $y; 

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

     echo "3+5=" . 3 + 5; echo ("3+5=" . 3) + 5; //added braces to demonstrate actual operations order echo "3+5=3" + 5; echo 3 + 5; //string evaluated in numeric context is coerced to number¹ echo 8; 

    В исходном коде вопроса есть еще одна конкатенация строк, которая объединит этот результат с другой строкой, и все.

    ¹ Из документов PHP :

    Значение задается начальной частью строки. Если строка начинается с действительных числовых данных, это будет используемое значение. В противном случае значение будет равно 0 (ноль). Действительные числовые данные являются необязательным знаком, за которым следуют одна или несколько цифр (необязательно содержащие десятичную точку), за которыми следует необязательный показатель. Показателем является «e» или «E», за которым следует одна или несколько цифр.

    И, конечно же, вы всегда можете использовать фигурные скобки, чтобы заставить приоритет операций, чтобы получить желаемый результат.

    Вы можете переписать выражение, подобное этому, чтобы увидеть последовательность оценок: ((("$x+$y=".$x) + $y)."</br>");

    Вот что происходит в деталях:

    1. Строка интерполирована имеет место, меняя "$x+$y=" на "10+7="
    2. Конкатенация строк имеет место "10+7=".$x приводящая к "10+7=10"
    3. Добавление между строкой и числом имеет место "10+7=10"+$y оценивается до "10+7" и в конечном итоге "17" потому что php пытается преобразовать строку в число. Во время этого процесса он начинается с левой стороны строки, и в вашем примере он находит 10 . Далее будет найден символ + , который не является числом, и это завершает попытку преобразования строки в число. Однако найденное число ( 10 ) остается как числовая интерпретация строки.
    4. 17 объединяется с последней строкой, и это повторяется.

    Надеюсь, что это поможет, Лодди

    Это связано с приоритетом оператора для получения более подробной информации, которую вы можете найти http://php.net/manual/en/language.operators.precedence.php

    Для видимого формата вы можете использовать

     echo '$x+$y='.($x+$y)."</br>"; 

    output: $ x + $ y = 15