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

最新文章

  1. 远程联机linux主机
  2. apache htpasswd.exe创建密码
  3. 16. Copy List with Random Pointer
  4. Win7 64位系统 VS2010连接Oracle报错的问题
  5. l来自wentao:项目加入缓存(redis),实时调试时用 -----可视化缓存,flushdb
  6. Moses 里的参数(未完成)
  7. java--简单排序算法
  8. 一.oracle的SQL中group by使用的情况(与聚合函数的关系)
  9. QzzmServer v2.0正式版发布
  10. Apache的Directory配置指南
  11. Django 内置分页器
  12. 算法题:给出一组数字,拼接一个最大的值 PHP
  13. poj-2406(kmp水题)
  14. java框架之Hibernate(4)-几种检索方式
  15. VBS数组导入Excel
  16. py库: jieba (中文词频统计) 、collections (字频统计)、WordCloud (词云)
  17. 类与接口(三)java中的接口与嵌套接口
  18. javascript的基础知识整理
  19. mybatis 参数为String,用_parameter 取值
  20. 在Mac中设置Ctrl+C/V进行复制/粘贴

热门文章

  1. react——使用this.setState({ })修改state状态值
  2. Docker 备忘
  3. XSS防御和绕过1
  4. 使用busybox1.21.1制作根文件系统
  5. SDU&amp;PDU
  6. ble ic
  7. 使用Parallel计算目录中的文件字节长度
  8. 接口数据转json格式
  9. [易学易懂系列|rustlang语言|零基础|快速入门|(27)|实战4:从零实现BTC区块链]
  10. TETP服务和PXE功能