百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>网页制作> php之var_dump(1...9)会导出什么?
分享文章到:

php之var_dump(1...9)会导出什么?

发布时间:09/01 来源:未知 浏览: 关键词:
var_dump(1...9)会输出什么?下面本篇文章给大家剖析一下。有必然的参照 价值,有需要的伴侣可以参照 一下,但愿对大家有所帮忙。

一个问题, var_dump(1...9)输出什么?

动手验证下:

php -r “var_dump(1...9)”;
string(4) ”10.9“

输出10.9, 乍一看这个var_dump的输出很惊奇是不是? 为什么呢?

这里教大家,假如看到一段PHP代码感受输出很惊奇,第一反响是看下这段代码生成的opcodes是啥,虽然这个问题其实是词法剖析阶段的问题,不外还是用phpdbg剖析下吧(一样为了防止opcache的影响,会传递-n):

phpdbg -n -p /tmp/1.php
function name: (null)
L1-35 {main}() /tmp/1.php - 0x7f56d1a63460 + 4 ops
L2 #0 INIT_FCALL<1> 96 "var_dump"
L2 #1 SEND_VAL "10.9" 1
L2 #2 DO_ICALL
L35 #3 RETURN<-1> 1

所以这么看来,早在生成opcode此前,1...9就变成了常量10.9,思考到这是字面量,我们此刻去看看zend_language_scanner.l, 寻到这么一行:

DNUM ({LNUM}?"."{LNUM})|({LNUM}"."{LNUM}?)

这个是词法剖析定义的浮点数的格局,到这里也就豁然开朗了:

1...9 会被顺次接受为: 1. (浮点数1), 然后是 . (字符串连接符号) 然后是.9(浮点数0.9)

所以在编译阶段就会直接生成 “1” . “0.9” -> 字符串的字面量”10.9”

好了,到这里,这个小“谜题”就说明分明了。

当然这个也不仅仅是PHP会这么定义了,几乎所有的说话都会定义这种缩写浮点数都情势. C说话中有的时候我们为了输入一个浮点型的整形,就可以采纳比方 1. 来告诉编译器这是个浮点数.

只不外,一来恰好在PHP中.号还有别的一层含义就是字符串连接,二来...在PHP5.6之后是个新的操纵符叫做Splat operator, 可以用来定义可变参数函数,或者解数组,比方,

<?php
 
function  foo($a, $b, $c) {
        var_dump($a + $b + $c);
}
 
 
$parameters = array (1, 2, 3);
 
foo(...$parameters);
?>

所以, 乍一看才会致使了这个看起来很困惑的结果

引荐学习:PHP视频教程

以上就是php之var_dump(1...9)会输出什么?的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有157人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板