刚开始学习PHP不久,遇到了这样的问题:
<?php
$a = 1;
$b = 2;
echo "$a * $b = " . $a * $b;
echo "<br />";
echo "$a / $b = " . $a / $b;
echo "<br />";
echo "$a + $b = " . $a + $b;
echo "<br />";
echo "$a - $b = " . $a - $b;
echo "<br />";
我得到以下输出:
1 * 2 = 2
1 / 2 = 0.5
3
-1
输出中的最后两行不是我所期望的。
为什么是这样?这些表达式是如何评估的?我正在努力更好地理解这门语言。
发生这种情况是因为串联运算符有一个更高的优先级 http://php.net/manual/en/language.operators.precedence.php与加法或减法运算符相比,但乘法和除法的优先级高于串联。
所以,你真正执行的是:
echo ("$a + $b = " . $a) + $b;
echo ("$a - $b = " . $a) - $b;
在第一种情况下,情况会变成这样:
"1 + 2 = 1" + $b
PHP 尝试转换哪个"1 + 2 = 1"
变成一个数字(因为类型杂耍 http://php.net/manual/en/language.types.type-juggling.php) 得到 1,将表达式变为:
1 + 2
这就是为什么你得到 3。相同的逻辑可以应用于减法条件。
相反,如果在计算结果两边加上括号,您将得到所需的输出。
echo "$a + $b = " . ($a + $b);
echo "$a - $b = " . ($a - $b);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)