请考虑以下代码行:
<?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手册中的一个位置解释它,我将不胜感激。
发布于 2011-09-27 19:30:53
您的字符串'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-27 19:34:21
在此代码中:
echo '10 - 7 = '.$x-$y;
连接优先,所以您剩下的是:
echo '10 - 7 = 10'-$y;
因为这是试图使用字符串执行整数减法,所以字符串首先被转换为整数,因此您将得到如下内容:
echo (int)'10 - 7 = 10'-$y;
该字符串的整数值为10
,因此生成的算术如下所示:
echo 10-$y;
因为$y
是7
,而10 - 7 = 3
是回显结果是3
。
发布于 2011-09-27 19:30:53
.
和-
有相同的优先,所以PHP正将'10 - 7 = 10'
重新解释为一个数字,给出10
,并减去7给3
。
https://stackoverflow.com/questions/7574624
复制相似问题