4

考虑以下代码行:

<?php
$x = 10;
$y = 7;

echo '10 - 7 = '.$x-$y;
?>

其输出为 3,这是计算 $x-$y 的预期结果。但是,预期的输出是:

10 - 7 = 3

因此,我的问题是,我与计算连接的字符串发生了什么变化?我知道为了产生我期望的结果,我需要将算术运算括在括号中:

<?php
$x = 10;
$y = 7;

echo '10 - 7 = '.($x-$y);
?>

输出

10 - 7 = 3

但是由于 PHP 不会抱怨原始代码,我想知道在这种情况下生成的输出背后的逻辑是什么?绳子去哪儿了?如果有人可以解释它或将我指向 PHP 手册中解释它的位置,我将不胜感激。

4

3 回答 3

4

您的字符串'10 - 7 = '正在与$x. 然后将其解释为int结果,10然后7减去,结果3

如需更多解释,请尝试以下操作:

echo (int) ('10 - 7 = ' . 10); // Prints "10"

有关字符串到数字转换的更多信息,请访问 http://www.php.net/manual/en/language.types.string.php#language.types.string.conversion

如果字符串以有效的数字数据开头,这将是使用的值

于 2011-09-27T19:30:53.083 回答
4

在这段代码中:

echo '10 - 7 = '.$x-$y;

串联优先,所以你剩下的是:

echo '10 - 7 = 10'-$y;

因为这是尝试对字符串执行整数减法,所以首先将字符串转换为整数,所以你会得到这样的结果:

echo (int)'10 - 7 = 10'-$y;

该字符串的整数值为10,因此生成的算术如下所示:

echo 10-$y;

因为$yis710 - 7 = 3,所以回显的结果是3

于 2011-09-27T19:34:21.857 回答
2

.并且-具有相同的优先级,因此 PHP 将重新解释'10 - 7 = 10'为一个数字,给107,然后减去 7 给3

于 2011-09-27T19:30:53.397 回答