我有以下代码片段,我不太了解它的输出:
echo 20...7;
为什么此代码输出200.7
?
据我所知...
是splat运算符,它在ruby中调用,它允许你有一个带有可变数量参数的函数,但是我不知道它在这里做了什么echo
的上下文。
任何人都可以解释这段代码的确切含义吗?
答案 0 :(得分:14)
不,这不是splat / unpacking操作符,即使它看起来像是这样。这只是PHP解析过程的结果。已经编写了一些不同的代码可能会让人感到困惑:
echo 20. . .7;
# ↑ ↑ ↑
# decimal concatenation decimal
# dot dot dot
现在您必须知道.7
是0.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"