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

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

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

<?php

$var1 = 3;

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

?>

1

Решение

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

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 номер соединяется с <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.
7

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

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

Ваш 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 + (int)(3 . '<br>') который number + 3, нет <br> существует в настоящее время из-за повторного набора номера (преобразования в число).

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

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

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

«» используется для переменной php для конкатенации не для чисел

<?php


$var1 = 3;

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

?>
1

Попробуйте так.

 <?php
$var1 = 3;

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

?>
1
По вопросам рекламы [email protected]