服务器端编程语言(专业超文本预处理器的缩写)的输出缓存是可以嵌套的。用ob_get_level()就可以输出嵌套级别。测试发现在硬币指示器(硬币水平指示器的缩写)命令行界面(批处理脚本的命令行界面)和浏览器下输出结果不一样(PHP5.4)。
手册说明如下:
ob_get_level()在析构函数中总是返回0。这是因为在调用析构函数之前,输出缓冲区的垃圾收集已经完成
想要正确输出也很简单:复制代码代码如下: ob _ end _ clean();echo ob _ get _ level();//0
回到正题:复制代码代码如下: ob _ end _ clean();ob _ start();回声报“P1博士”;//此处并不会在页面中输出$ a=ob _ get _ level();$ b=ob _ get _ contents();//获得缓存结果,赋予变量ob _ clean();ob _ start();回显“PHP 2”;//此处并不会在页面中输出$ c=ob _ get _ level();$ d=ob _ get _ contents();//获得缓存结果,赋予变量ob _ clean();ob _ start();呼应“PHP 3”;//此处并不会在页面中输出$ e=ob _ get _ level();$ f=ob _ get _ contents();//获得缓存结果,赋予变量ob _ clean();回显级别:$a . ',ouput: ' .$ b. ' br回显级别:$c ',ouput: ' .$ d. ' br回显级别:$e ',ouput: ' .$ f. ' br
结果如下:复制代码代码如下:level:1,ouput:php1level:2,ouput:php2level:3,ouput:php3
当然,当你关闭某个级别的缓冲,如下测试:复制代码代码如下: ob _ end _ clean();ob _ start();回声报“P1博士”;$ a=ob _ get _ level();$ b=ob _ get _ contents();ob _ clean();ob _ start();回显“PHP 2”;$ c=ob _ get _ level();$ d=ob _ get _ contents();ob _ end _ clean();//清空缓存并关闭缓存ob _ start();呼应“PHP 3”;$ e=ob _ get _ level();$ f=ob _ get _ contents();ob _ clean();回显级别:$a . ',ouput: ' .$ b. ' br回显级别:$c ',ouput: ' .$ d. ' br回显级别:$e ',ouput: ' .$ f. ' br
结果如下:复制代码代码如下:level:1,ouput:php1level:2,ouput:php2level:2,ouput:php3