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