为什么' ...'在我的代码中连接两个数字?

时间:2017-05-17 11:37:17

标签: php numbers echo

我有以下代码片段,我不太了解它的输出:

echo 20...7;

为什么此代码输出200.7

据我所知...是splat运算符,它在ruby中调用,它允许你有一个带有可变数量参数的函数,但是我不知道它在这里做了什么echo的上下文。

任何人都可以解释这段代码的确切含​​义吗?

1 个答案:

答案 0 :(得分:14)

不,这不是splat / unpacking操作符,即使它看起来像是这样。这只是PHP解析过程的结果。已经编写了一些不同的代码可能会让人感到困惑:

echo  20.           .           .7;
#       ↑           ↑           ↑
#    decimal  concatenation  decimal
#      dot         dot         dot

现在您必须知道.70.7并且您可以在syntax for float numbers中描述的PHP中省略0:

DNUM          ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*)

所以PHP只是将这两个数字连接在一起,而这样做PHP的类型杂耍将silently convert both numbers to strings

所以最后你的代码相当于:

echo "20" . "0.7";
//Output: "200.7"