为什么 echo 3 . print(2) . print(4) . 5 . 'c'的结果是45c2131
例子:请写出echo 3 . print(2) . print(4) . 5 . 'c'的输出结果为____?
许多人看到这个题的第一印象是输出结果不就是3245c嘛,然而正确的是答案却是45c2131,是不是感觉不可思议?
想要分析原因首先我们需要明确以下几点:
- PHP中的.连接符是从左向右执行的;
- echo和print输出都是需要占用io的;
- print函数有返回值且始终返回1。
- print函数在打印输出时,会清空io存储
然后我们再来分析上面的的语句的执行过程
echo 3 . print(2) . print(4) . 5 . 'c';
程序从左至右执行,
第一步:
最初在io存储处存入 字符串 c,接着遇到5,存入io,此时io内容为5c, echo 在碰到print()时候将执行print(),即在把 5 放入io存储后由print(4)将数字4也同样压入io存储中,此时io存储中数据为45c,由于print()为输出函数(官方介绍print实际是语言结构,不是函数),所以此时会执行一次io输出操作,即输出 45c 到输出界面,清除io存储,io存储内此时数据为'',print()执行完成后返回1,此时界面上已经有了45c,而代码则变成了
echo 3.print(2).1;
第二步:
同上以此类推,这次会先将1放入io内,接着讲2放入io内,此时io内的内容为21,print执行输出操作,清空io,此时屏幕相等于已经输了了45c21,代码则变为了
echo 3.1;
第三步:
将1和3放入io,此时io内容为31,echo 将io内容输出到屏幕,此时最终结果为45c2131
同类例题:
echo 3 . print(2) . print(4) . 5 . 'c' . print(6) . print(7) . 'b' . print(8) . 'a';的结果是什么呢?
结果是:8a7b16145c12131
有兴趣的可以看看自己的推算出的结果是否是正确的。
参考:https://blog.csdn.net/inite/article/details/74130350
为什么 echo 3 . print(2) . print(4) . 5 . 'c'的结果是45c2131的更多相关文章
- 2018/03/16 echo、print_r、print、var_dump之间的区别
还是先说下我对这个方法的理解 print_r()用于 cli模式下的输出调试,error_log() 调试 var_dump() 用于页面的显示调试 echo() 用处比较多,__toString() ...
- Echo()、print()、print_r()区别
echo可以一次输出多个值,多个值之间用逗号分隔.echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用.echo是php的内部指令,不是函数, ...
- GridView Print and Print Preview
sing System.Linq; using System.Printing; using System.Windows; using System.Windows.Controls; using ...
- php中echo(),print(),print_r(),var_dump()间的区别
echo()函数:输出一个或多个字符串.实际上它并不是一个函数,所以不必对它使用括号,直接用echo就行.然而,如果您希望向echo()传递一个以上的参数,使用括号将会生成解析错误.echo()函数比 ...
- echo print() print_r() var_dump()的区别
常用调试方法 echo()可以一次输出多个值,多个值之间用逗号分隔.echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用. print()函数 ...
- 7.echo(),print(),print_r()的区别
echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) print() 只能打印出简单类型变量的值(如int,string) print_r() ...
- php中echo(),print(),print_r()之间的区别
echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) print只能打印出简单类型变量的值(如int,string) print_r可以打印出复 ...
- PHP之echo/print
1.PHP中有两个基本的输出方式:echo和print: 2.echo和print的区别: **echo:可以输出一个或多个字符串: **print:只允许输出一个字符串,返回值总为1: 3.echo ...
- 5.echo(),print(),print_r()的区别
echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) print() 只能打印出简单类型变量的值(如int,string) print_r() ...
随机推荐
- IDEA使用SpringBoot 、maven创建微服务的简单过程
使用IDEA新建一个简单的微服务 1. 打开IDEA,File -> New -> project 打开如下图1-1所示的对话框 图 1-1 2.点击"Next"按钮 ...
- 高性能迷你React框架anujs1.1.0发布
本版本对setState与forceUpdate内部依赖的setStateImpl进行了重构,性能稳定在60pfs之上.并且将组件实例的所有内部方法与属性都改成以___开头. https://gith ...
- linux check
建议安装chkrootkit.rkhunter.Lynis.ISPProtect这类安全工具,定期做扫描
- 面试加分项---HashMap底层实现原理
想必大家都知道HashSet和HashMap之间的关系,HashSet是依赖于HashMap的,HashSet集合就是HashMap的key所组成的集合,我们都知道HashMap的value是可以重复 ...
- js中子窗口调用父窗口中的变量、函数
- spring cloud 笔记
1.在工程的启动类中,通过@EnableDiscoveryClient向服务中心注册:并且向程序的ioc注入一个bean: restTemplate;并通过@LoadBalanced注解表明这个res ...
- easyui改变tab标题
截图: 代码: //更改tab的标题 var tab = $('#microAppVersionTabs').tabs('getTab',0);// 取得第一个tab $('#microAppVe ...
- Flask最强攻略 - 跟DragonFire学Flask - 第九篇 Flask 中的蓝图(BluePrint)
蓝图,听起来就是一个很宏伟的东西 在Flask中的蓝图 blueprint 也是非常宏伟的 它的作用就是将 功能 与 主服务 分开怎么理解呢? 比如说,你有一个客户管理系统,最开始的时候,只有一个查看 ...
- AltiumDesigner 常用快捷键小结
Ctrl + o | 打开文件夹/文档 Ctrl + p | 打印设置 Esc | 从当前步骤退出 Shift +鼠标滚轮 | 向左/向右移动 Ctrl + C (或 Ctrl + ...
- jq怎么给图片绑定上传文件按钮
html代码 <img src="/img/zhengmian.png" alt="" class="file1"> <i ...