Почему в этом коде не работает тег линии html br break?

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

Я знаю, что могу написать код по-другому, чтобы сделать разрыв строки, но я хочу знать причину этого?

<?php $var1 = 3; echo "Addition = " . $var1 += 3 . "<br>"; echo "Subtraction = " . $var1 -= 3 . "<br>"; echo "Multiplication = " . $var1 *= 3 . "<br>"; echo "Division = " . $var1 /= 3 . "<br>"; ?> 

Вы можете использовать запятые,

 echo "Addition = " . $var1 += 3 , "<br>"; echo "Subtraction = " . $var1 -= 3 ,"<br>"; echo "Addition = " . $var1 *= 3 , "<br>"; echo "Addition = " . $var1 /= 3 ,"<br>"; 

Или заключите его в скобки:

 echo "Addition = " . ($var1 += 3) . "<br>"; echo "Subtraction = " . ($var1 -= 3) ."<br>"; echo "Addition = " . ($var1 *= 3) . "<br>"; echo "Addition = " . ($var1 /= 3) ."<br>"; 

В противном случае номер 3 будет объединен с помощью.

Кажется, мне нужно кое-что убрать здесь.

Давайте посмотрим на приоритет оператора , который гласит:

  1. . имеет более высокий приоритет, чем += , -= , *= , /=
  2. . остается ассоциативным
  3. = , += , -= , *= , /= является правым ассоциативным
  4. Мы также рассмотрим примечание в нижней части руководства:

    Примечание: хотя = имеет более низкий приоритет, чем большинство других операторов, PHP все равно позволит выражениям, аналогичным следующим: if (! $ A = foo ()) , и в этом случае возвращаемое значение foo () помещается в $ a.

Значит, что даже жесткий = имеет более низкий приоритет, чем . сначала оценивается. Вы также можете увидеть это, если вы сделаете что-то вроде этого:

 $xy = "HERE"; echo "I am " . $xy = "NOT HERE"; 

Теперь ты подумаешь . имеет более высокий приоритет, чем = и будет оцениваться первым, но, как из примечания в руководстве, назначение является первым, и вы в итоге получаете следующее:

 echo "I am " . ($xy = "NOT HERE"); 

вывод:

 I am NOT HERE 

Поэтому, если мы объединим всю эту информацию, мы можем сказать, что назначение сначала оценивается, но оно является правильным. Это означает:

 $var1 = 3; echo "Addition = " . ($var1 += 3 . "<br>"); echo "Subtraction = " . ($var1 -= 3 . "<br>"); echo "Addition = " . ($var1 *= 3 . "<br>"); echo "Addition = " . ($var1 /= 3 . "<br>"); 

Таким образом, этот код закончится следующим:

 echo "Addition = " . ($var1 += "3<br>"); echo "Subtraction = " . ($var1 -= "3<br>"); echo "Addition = " . ($var1 *= "3<br>"); echo "Addition = " . ($var1 /= "3<br>"); 

Который затем через арифметический оператор получает преобразование в целое число, мы заканчиваем тем:

 echo "Addition = " . ($var1 += 3); echo "Subtraction = " . ($var1 -= 3); echo "Addition = " . ($var1 *= 3); echo "Addition = " . ($var1 /= 3); 

И после выполнения задания будет проведена оценка конкатенации, которая выглядит так:

 echo "Addition = " . 6; echo "Subtraction = " . 3; echo "Addition = " . 9; echo "Addition = " . 3; 

С этим вы получаете результат:

 Addition = 6Subtraction = 3Addition = 9Addition = 3 

А теперь как это решить? Просто скопируйте свое назначение в круглые скобки, чтобы тэг <br> не попадал в задание. Например

 echo "Addition = " . ($var1 += 3) . "<br>"; echo "Subtraction = " . ($var1 -= 3) . "<br>"; echo "Multiplication = " . ($var1 *= 3) . "<br>"; echo "Division = " . ($var1 /= 3) . "<br>"; //^ ^ So the br tag doesn't get in the assignment of the variable. 

Это происходит из-за проблем с выбором типа. 3 . "<br>" 3 . "<br>" будет преобразовано в число во время выполнения операции. Оберните внутренность () чтобы операции выполнялись сначала, а затем конкатенация.

 echo "Addition = " . ($var1 += 3) . "<br>"; echo "Subtraction = " . ($var1 -= 3) ."<br>"; echo "Addition = " . ($var1 *= 3) . "<br>"; echo "Addition = " . ($var1 /= 3) ."<br>"; 

Ваш PHP означает:

 echo "Addition = " . $var1 += (3 . "<br>"); echo "Subtraction = " . $var1 -= (3 ."<br>"); echo "Addition = " . $var1 *= (3 . "<br>"); echo "Addition = " . $var1 /= (3 ."<br>"); 

И number + 3 . '<br>' number + 3 . '<br>'number + (int)(3 . '<br>') которое равно number + 3 . Нет теперь существует из-за повторного набора числа (преобразования на число).

Используйте скобки вокруг уравнений.

 echo "Addition = " . ($var1 += 3) . "<br>"; echo "Subtraction = " . ($var1 -= 3) ."<br>"; echo "Addition = " . ($var1 *= 3) . "<br>"; echo "Addition = " . ($var1 /= 3) ."<br>"; 

Попробуй это..

"" используется для переменной php, чтобы конкретизировать не число

 <?php $var1 = 3; echo "Addition = ". ($var1 += 3) ."</br>"; echo "Subtraction = ". ($var1 -= 3) ."</br>"; echo "Addition = ". ($var1 *= 3) ."</br>"; echo "Addition = ". ($var1 /= 3) ."</br>"; ?> 

Попробуйте это.

  <?php $var1 = 3; echo "Addition =" . ($var1 += 3 ).'<br>'; echo "Subtraction =" . ($var1 -= 3).'<br>'; echo "Addition =" . ($var1 *= 3 ).'<br>'; echo "Addition =" . ($var1 /= 3 ).'<br>'; ?>