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

csa*_*mus 13 php numbers echo

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

echo 20...7;
Run Code Online (Sandbox Code Playgroud)

为什么这个代码输出200.7

据我所知...,splat运算符在ruby中调用,它允许你有一个带有可变数量参数的函数,但我不明白它在上下文中的作用echo.

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

Yve*_*org 14

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

echo  20.           .           .7;
#       ?           ?           ?
#    decimal  concatenation  decimal
#      dot         dot         dot
Run Code Online (Sandbox Code Playgroud)

现在你必须知道那.70.7你可以省略PHP中的0,如浮点数语法中所述:

DNUM          ([0-9]*[\.]{LNUM}) | ({LNUM}[\.][0-9]*)
Run Code Online (Sandbox Code Playgroud)

因此,PHP只是将这两个数字连接在一起,而这样做PHP的类型juggling将默默地将两个数字转换为字符串.

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

echo "20" . "0.7";
//Output: "200.7"
Run Code Online (Sandbox Code Playgroud)