Ошибка отображения «текста» в php перед вычислением операции - PullRequest
1 голос
/ 11 октября 2019

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

Вот мой код:

$x = 5;
$y = 10.5;
  echo "add: 5+6 =" . $x + $y;

Ответы [ 6 ]

4 голосов
/ 11 октября 2019

Этот код вычисляет сложение $ x + $ y, затем преобразует в строку, затем объединяет в строку «add: 5 + 6 =» (см. https://www.php.net/manual/en/function.strval.php)

$x = 5;
$y = 10.5;
echo "add: 5+6 = ". strval($x + $y);

О вашем коде

См. https://www.php.net/manual/en/language.operators.precedence.php: операторы конкатенации имеют более высокий приоритет, чем арифметические операторы.

Ваш исходный код такой же, как:

$x = 5;
$y = 10.5;
echo (int)("add: 5+6 =" . $x) + $y;

Тоозначает: сначала объединить строку «add: 5 + 6 =». $ x

add 5+6 =5

, затем привести к int (возвращающему 0)

(int)("add: 5+6 =5")

, затем добавить $ y

0 + 10.5

затем повторить его

echo 10.5;

Так вот почему ваш код возвращает 10,5

3 голосов
/ 11 октября 2019
<?php
$x = 5;
$y = 10.5;

echo "add: 5+6 =" . ($x + $y); // automatic converts to `string`
2 голосов
/ 11 октября 2019

Вы можете попробовать это.

<?php
    $x = 5;
    $y = 10.5;
    $z = $x + $y;
    echo "add: 5+6 = " . $z;
?>
1 голос
/ 11 октября 2019

Вы можете сделать это путем объединения вашей переменной

<?php
$x = 5;
$y =10.5;
$z=$x+$y;

echo "add: ".$x."+".$y." = ". $z;
?>

output

add: 5+10.5 = 15.5
1 голос
/ 11 октября 2019

попробуйте это:

$x = 5;
$y = 10.5;
$z=$x+$y;
echo "add:5+6 =".$z;
1 голос
/ 11 октября 2019
<?php
  $x = 5;
  $y = 10.5;
  printf("add: 5+6 = %f", $x + $y);
?>

...