一个PHP数学表达式,有两个不同的结果

时间:2016-10-05 11:27:51

标签: php

 $z = "321";
 $x = 5;
 $y = 10.5;
 echo $x+$y*$x;
 echo "<br />";
 echo "2</br>".$x+$y*$x;

输出:

57.5<br />54.5

我很震惊这个输出是怎么出来的。任何人都可以澄清这个等式吗?

3 个答案:

答案 0 :(得分:2)

我会解释一下你的问题:

//$z = "321";
$x = 5;
$y = 10.5;
echo $x+$y*$x;
echo "<br />";
echo "2</br>".$x+$y*$x;
output///57.5 //54.5

你得到不同的结果,因为你在一起添加字符串和int。

echo "2</br>".$x+$y*$x;

表示:

"2</br>5" + (10.5 * $x);

并且php会将字符串转换为int以进行添加。

"2</br>5 will be converted into 2 

,结果将是

2 + 52.5

答案 1 :(得分:0)

57.5只是5 + 10.5. * 5的结果。 54.5有点复杂......

由于operator precedence

echo "2</br>".$x+$y*$x;

相当于

echo ("2<br />" . $x) + ($y * $x)

,其后,等同于

echo ("2<br />5"  + 52.5)

因为PHP将此表达式的左侧转换为+运算符的数字(请参阅String conversion to numbers),所以最终会得到

echo 2 + 52.5

会产生 54.5

答案 2 :(得分:0)

从输出中我假设PHP遵循BIDMAS(括号,指数,除法和乘法,加法和减法),因此:5 + 10.5 * 5等于:5 +(10.5 * 5)= 57.5

至于第二个输出,我无法立即看到输出“54.5”的原因,但我会指出''应该是:

<br/>

<br />

<br>