Этот код вычисляет сложение $ 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