Gin*_*ane 168 php ellipsis echo
我刚刚遇到了来自3v4l的一小段PHP代码:https://3v4l.org/jmrZB
echo 1...1; //10.1
Run Code Online (Sandbox Code Playgroud)
而且我担心我不知道如何解释其结果.为什么这被认为是有效的?
axi*_*iac 221
dot(.)在PHP中有两个角色:
1.1.积分部分和小数部分在实数上都是可选的,但不是同时的.这意味着既1.和.1有效实数在PHP,但.不是一个数字.1 . 1是一样的'1' . '1',它的值是字符串'11'.表达式1...1被解析为1. . .1.根据上面说的那些,1.并且.1是实数(1.0和0.1)和中间点(.)是字符串连接运算符.
将数字转换为字符串时,PHP使用此操作所需的最少字符数.如果实数只有整数部分,则表示数字为整数,不带小数点和小数.
这就是为什么和表达式的最终值1. . .1相同的原因.'1' . '0.1'10.1
1...1这样解析?解析器从左到右读取表达式.1告诉它一个数字从那里开始.1.是一个有效的实数,但1..不是.它保持1.为数字,然后下一个点是连接运算符..接着是数字的下一个是另一个实数(.1)的开头.
总而言之,1...1是一样的1. . .1.
Man*_*mer 63
因为它被解释为1. . .1(1和0.1)因此你得到10.1
Pol*_*ome 45
应用括号将清楚说明:
(1.) . (.1)
1. 被解释为 1.是字符串连接.1 被解释为 0.1这全部放入一个字符串是10.1 一个字符串.
var_dump(1...1) 产量string(4) "10.1"
小智 22
不同的操作.
1. <?php echo 1.1; ?> // gives simple 1.1
2. <?php echo 1...1; ?> // gives 10.1
3. <?php echo 1..'1'; ?> // gives 11
4. <?php var_dump(1.); ?> // gives 1
5. <?php var_dump(.1); ?> // gives 0.1
Run Code Online (Sandbox Code Playgroud)
现在,我们奇怪的操作
echo 1...1
Run Code Online (Sandbox Code Playgroud)
被视为4号和5号的串联,结果为10.1
| 归档时间: |
|
| 查看次数: |
10201 次 |
| 最近记录: |