Может кто-нибудь сказать, почему мой 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
номер соединяется с <br>
,
Кажется, мне нужно кое-что почистить здесь.
Давайте посмотрим на приоритет оператора, который говорит:
.
имеет более высокий приоритет, чем +=
, -=
, *=
, /=
.
левый ассоциативный=
, +=
, -=
, *=
, /=
правильно ассоциативноМы также взглянем на примечание внизу руководства:
Замечания:
Хотя = имеет более низкий приоритет, чем большинство других операторов, 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>"
будет преобразован в число, в то время как операция будет выполнена. Обернуть внутри ()
так что сначала выполняются операции, затем конкатенация.
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 + (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>";
Попробуй это..
«» используется для переменной 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>';
?>