PHP的输出缓存是可以嵌套的。用ob_get_level()就可以输出嵌套级别。

测试发现在cli和浏览器下输出结果不一样(PHP5.4)。

ob_level1.png手册说明如下:

ob_get_level() will always return 0 inside a destructor.

This happens because the garbage collection for output buffers has already done before the destructor is called

想要正确输出也很简单:

ob_end_clean();

echo ob_get_level(); //0

回到正题:

ob_end_clean();

ob_start();

echo 'php1';//此处并不会在页面中输出

$a = ob_get_level();

$b = ob_get_contents();//获得缓存结果,赋予变量

ob_clean();

ob_start();

echo 'php2';//此处并不会在页面中输出

$c = ob_get_level();

$d = ob_get_contents();//获得缓存结果,赋予变量

ob_clean();

ob_start();

echo 'php3';//此处并不会在页面中输出

$e = ob_get_level();

$f = ob_get_contents();//获得缓存结果,赋予变量

ob_clean();

echo 'level:'.$a.',ouput:'.$b.'<br>';

echo 'level:'.$c.',ouput:'.$d.'<br>';

echo 'level:'.$e.',ouput:'.$f.'<br>';

结果如下:

level:1,ouput:php1

level:2,ouput:php2

level:3,ouput:php3

当然,当你关闭某个级别的缓冲,如下测试:

ob_end_clean();

ob_start();

echo 'php1';

$a = ob_get_level();

$b = ob_get_contents();

ob_clean();

ob_start();

echo 'php2';

$c = ob_get_level();

$d = ob_get_contents();

ob_end_clean(); //清空缓存并关闭缓存

ob_start();

echo 'php3';

$e = ob_get_level();

$f = ob_get_contents();

ob_clean();

echo 'level:'.$a.',ouput:'.$b.'<br>';

echo 'level:'.$c.',ouput:'.$d.'<br>';

echo 'level:'.$e.',ouput:'.$f.'<br>';

结果如下:

level:1,ouput:php1

level:2,ouput:php2

level:2,ouput:php3

转载于:https://www.cnblogs.com/raobenjun/p/8041670.html

PHP ob_get_level嵌套输出缓冲相关推荐

  1. php输出语句中怎么嵌套计算,PHP嵌套输出缓冲代码实例

    PHP的输出缓存是可以嵌套的.用ob_get_level()就可以输出嵌套级别. 测试发现在cli和浏览器下输出结果不一样(PHP5.4). 手册说明如下: ob_get_level() will a ...

  2. php output详解,PHP输出缓冲控制Output Control系列函数详解,output函数详解

    PHP输出缓冲控制Output Control系列函数详解,output函数详解 概述 以前研究过PHP的输入输出缓冲,不过博客搬家以后,原来文章找不到了,今天看到一篇好文,顺便转载过来. 简介 说到 ...

  3. php.ini 关闭输出缓冲,php 输出缓冲 Output Control用法实例详解

    本文实例讲述了php 输出缓冲 Output Control用法.分享给大家供大家参考,具体如下: 关于php的输出缓冲,首先要说明的是什么是缓冲(buffer),比如我们通过记事本在编辑文件的时候, ...

  4. 剖析PHP中的输出缓冲

    剖析PHP中的输出缓冲 本文按署名·非商业用途·保持一致授权 作者:  ,发表于2005年12月24日01时54分 我们先来看一段代码. <?php for ($i=10; $i>0; $ ...

  5. PHP中刷新输出缓冲

    http://www.cnblogs.com/mutuan/archive/2012/03/18/2404957.html PHP中刷新输出缓冲 buffer是一个内存地址空间,Linux系统默认大小 ...

  6. php不缓存直接输出,如何在PHP中禁用输出缓冲

    做两件事: 禁用用户空间输出缓冲区,或者... 在全球范围内,通过... output_buffering在您的php.ini中关闭,或 output_buffering使用以下命令在Apache配置 ...

  7. php 内容编码错误,PHP输出缓冲,ob_gzhandler引起的内容编码错误?

    应用程序的输出应该只包含一个输出编码.如果您有多个编码方式不同的块,那么浏览器将得到一个无法使用的结果.因此编码错误. Kohana本身已经使用了输出缓冲区.如果你想将它与你的ob_gzhandler ...

  8. php清除输出缓冲,php如何清除缓冲区

    在PHP中可以通过"ob_clean"函数清除输出缓冲区,该函数的语法是"ob_clean ( void ) : void",此函数用来丢弃输出缓冲区中的内容, ...

  9. Python使用循环嵌套输出九九乘法表

    Python使用循环嵌套输出九九乘法表: 1x1=1 1x2=2 2x2=4 1x3=3 2x3=6 3x3=9 1. 首先输出9行,循环输出 i= 1 while i <= 9:print(i ...

最新文章

  1. linux shell脚本无法执行,报错syntax error near unexpected token `$'\r''解决方法
  2. Oracle技术牛人网站
  3. Python之列表表达式及高阶函数lamda、zip、enumerate、map和filter方法
  4. 把学单片机过程中遇到的问题与大家分享
  5. vnc远程桌面_手机vnc远程桌面,手机vnc远程桌面,使用配置详解
  6. ConstraintLayout 完全解析 快来优化你的布局吧
  7. 【Mac】Mac通过反向代理连接内网(教育网)服务器 + 免密登陆
  8. 解决努比亚 Z11 mini S 刷机导致 wifi 蓝牙失效的办法
  9. 究竟什么是软件资产管理(SAM)?企业应该怎么做?
  10. 电子技术基础(三)__电路分析基础__电感元件
  11. 量化框架backtrader之一文读懂Indicator指标
  12. 大数据BI平台建设需注意什么问题
  13. 任务驱动在中职计算机课中的应用,论任务驱动教学法在中职计算机基础课上的应用...
  14. vue+h5仿微信网页版聊天室vueWebChat项目
  15. 如何在vim快速删除全部内容
  16. LeetCode 练习——316. 去除重复字母
  17. 教你如何搭建自己的图床
  18. C练题笔记之:Leetcode-793. 阶乘函数后 K 个零
  19. 使用8266做串口调试工具一
  20. MixMarvel | 区块链项目介绍

热门文章

  1. 卡图星小机器人怎么过_安徽交通广播90.8专题报道:阿尔法大蛋机器人,家里的新成员!...
  2. 自学前端不用慌张!零基础自学前端必备手册,学成月薪12K
  3. 8年web前端开发老程序员告诉你如何零基础学习web前端
  4. 前端系统化学习【JS篇】:(三)Javascript中的命名规范
  5. 如何理解HTML结构的语义化?
  6. 主机消息服务器在哪找,怎么找电脑服务器主机地址吗
  7. vue 深度拷贝数组_前端深拷贝和浅拷贝
  8. pythonlocust使用方法_python locust 性能测试:locust安装和一些参数介绍
  9. js removeEventListener删除匿名函数
  10. NYOJ-子串和(dp)