php – 当我使用多个ob_start()没有ob_end_clean()或ob_end_flus
发布时间:2020-12-13 16:31:46 所属栏目:PHP教程 来源:网络整理
导读:我已经阅读了关于ob_start()ob_end_clean()ob_end_flush()的php手册.我已经看到了一个不同的例子,无论如何我修改了这个例子,但我在这一点感到困惑.这是脚本. ob_start();echo "Hello x,";ob_start();echo "Hello y,";ob_start();echo "Hello z,";ob_start();
我已经阅读了关于ob_start()ob_end_clean()ob_end_flush()的php手册.我已经看到了一个不同的例子,无论如何我修改了这个例子,但我在这一点感到困惑.这是脚本.
ob_start(); echo "Hello x,"; ob_start(); echo "Hello y,"; ob_start(); echo "Hello z,"; ob_start(); echo "Hello World"; $ob_2 = ob_get_contents(); ob_end_clean(); echo "Galaxy"; $ob_1 = ob_get_contents(); ob_end_clean(); echo " this is OB_1 : ".$ob_1; echo "<br> and this is OB_2 : ".$ob_2; 此脚本的输出是: 你好,你好,这是OB_1:你好z,银河 这是OB_2:Hello World ——————————————– 为什么输出不是这样的? 这是OB_1:你好,你好z,银河 这是OB_2:Hello World 我错过了什么?
输出缓冲区像堆栈一样工作.您创建一个缓冲区并在其中回显“Hello x”,然后创建另一个缓冲区,并将“Hello y”回显到其中,然后创建一个第三个缓冲区并将“Hello z”回显到其中. “Hello World”进入第四个缓冲区,通过调用ob_end_clean()关闭,所以你回到第三个缓冲区.当您在回应“Galaxy”之后调用ob_get_contents()时,您将获得第三个缓冲区的内容.
如果在本代码末尾再次调用ob_get_contents(),您将得到第二个缓冲区中的“Hello y”.如果您再次ob_end_close()然后ob_get_contents(),您将从第一个缓冲区获取“Hello x”. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |