手册在解释输出缓冲区是嵌套的方面有点含糊,并且“关闭输出缓冲”意味着关闭最高嵌套的缓冲区。请参阅 ob_get_level(对于一个有用的函数,但仍然没有解释)
<?php
ob_start();
echo "1:blah\n";
ob_start();
echo "2:blah";
// ob_get_clean() 返回最后一个打开的缓冲区的内容。第一个“blah”和 var_dump 的输出在退出时从顶部缓冲区中刷新
var_dump(ob_get_clean());
exit;
?>
输出
1:blah
string(6) "2:blah"
在意识到这一点之前,我一直认为 PHP 的 ob 功能还有待改进。我 *真的很* 希望我早点知道。