hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 文章 - 后端开发 - 正文 看Cosplay古风插画小姐姐,合集图集打包下载:炫龙网 · 炫龙图库

php之var_dump(1...9)会输出什么?_后端开发

2020-04-14后端开发ki4网31°c
A+ A-

Ubuntu升级php7.0配置fpm socket的方法详解_后端开发

nginx处理请求是通过fpm(来管理fastcgi的)来实现请求和响应。而nginx和php-fpm可以通过监听9000端口(默认)或者socket来实现。而9000的格式是127.0.0.1:9000,是走网络的。

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}?)

这个是词法分析定义的浮点数的格式,到这里也就恍然大悟了:

一个c语言程序只能有一个主函数吗_后端开发

一个c语言程序只能有一个主函数;主函数main是程序进程的开始,也是程序进程的结束,所以必须要有主函数,并且一个c语言程序只能有一个main函数,main不能被别的自定义函数调用。

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)会输出什么?的详细内容,更多请关注ki4网其它相关文章!

谈谈PHP中require和include的区别_后端开发

本篇文章和大家谈谈PHP中require和include的区别。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
php之var_dump(1...9)会输出什么?_后端开发

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签:

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>