手冊對於說明輸出緩衝區是巢狀的,以及「關閉輸出緩衝」指的是關閉最外層的緩衝區,著墨不多。參考 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 的輸出緩衝功能還有很多不足之處。我 *真* 希望早點知道這一點。