例子:请写出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的更多相关文章

  1. 2018/03/16 echo、print_r、print、var_dump之间的区别

    还是先说下我对这个方法的理解 print_r()用于 cli模式下的输出调试,error_log() 调试 var_dump() 用于页面的显示调试 echo() 用处比较多,__toString() ...

  2. Echo()、print()、print_r()区别

    echo可以一次输出多个值,多个值之间用逗号分隔.echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用.echo是php的内部指令,不是函数, ...

  3. GridView Print and Print Preview

    sing System.Linq; using System.Printing; using System.Windows; using System.Windows.Controls; using ...

  4. php中echo(),print(),print_r(),var_dump()间的区别

    echo()函数:输出一个或多个字符串.实际上它并不是一个函数,所以不必对它使用括号,直接用echo就行.然而,如果您希望向echo()传递一个以上的参数,使用括号将会生成解析错误.echo()函数比 ...

  5. echo print() print_r() var_dump()的区别

    常用调试方法 echo()可以一次输出多个值,多个值之间用逗号分隔.echo是语言结构(language construct),而并不是真正的函数,因此不能作为表达式的一部分使用. print()函数 ...

  6. 7.echo(),print(),print_r()的区别

    echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) print()    只能打印出简单类型变量的值(如int,string) print_r() ...

  7. php中echo(),print(),print_r()之间的区别

    echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用)  print只能打印出简单类型变量的值(如int,string)  print_r可以打印出复 ...

  8. PHP之echo/print

    1.PHP中有两个基本的输出方式:echo和print: 2.echo和print的区别: **echo:可以输出一个或多个字符串: **print:只允许输出一个字符串,返回值总为1: 3.echo ...

  9. 5.echo(),print(),print_r()的区别

    echo是PHP语句, print和print_r是函数,语句没有返回值,函数可以有返回值(即便没有用) print()    只能打印出简单类型变量的值(如int,string) print_r() ...

随机推荐

  1. 早期自学jQuery-一入门

    本节目录: ----------①安装使用 ----------②语法 ----------③文档就绪函数 ----------④选择器 一.安装使用(特别注意jQuery应当位于<head&g ...

  2. Node.js 程序应用

    在打开cmd 控制台 输入 node 然后在cmd中 输入您想要的代码 加减乘除 算法.

  3. [C语言]进阶|结构类型: 枚举, 结构, 类型定义

    --------------------------------------------------------------------- 枚举: // main.c #include <std ...

  4. java遍历实体类的属性和值

    代码如下: 实体类: public class User implements Serializable { private static final long serialVersionUID = ...

  5. docker-compose学习

    该实践是在已经安装了docker的基础上,如果还未安装docker,请先安装docker : https://www.cnblogs.com/theRhyme/p/9813019.html docke ...

  6. Python代码的人机大战(循环嵌套)

    第一次动手写随笔,记录一下今早的1.5小时努力成果 题目是这样的 : 人和机器进行猜拳游戏写成一个类,首先选择角色:1 曹操 2张飞 3 刘备,然后选择的角色进行猜拳:1剪刀 2石头 3布 玩家输入一 ...

  7. ToolBar+Drawable实现一个好用的侧滑栏(侧边栏)和工具栏

    先参考下ToolBar的使用和DrawableLayout的使用: 1.主界面布局,主要结构包含一个ToolBar和一个DrawableLayout,DrawableLayout里面有左侧边栏布局和主 ...

  8. 业务数据实体(model) 需要克隆的方法

    业务数据实体(model) 需要克隆的时候 可以使用 Json.Deserialize<InquireResult>(Json.Serialize<InquireResult> ...

  9. 528. Random Pick with Weight index的随机发生器

    [抄题]: Given an array w of positive integers, where w[i] describes the weight of index i, write a fun ...

  10. iis7 部署 mvc4项目提示404错误

    1.装了.net framework 4.0框架 2.重新注册了asp.net_iisreg -i 访问mvc项目仍提示404错误 搜了一下,有些服务器还要装个补丁 https://support.m ...