我有一個項目的數組。有兩種「類型」或項目:標題行和常規行。我只想在它下面有任何「常規」行時(在下一個標題之前)打印標題。PHP輸出緩衝區控件
(這是一個簡化 - 在實踐中我不會看到當前迭代中的下一個項目)。
爲了解決這個問題,我使用了緩衝區控制。我清除並在每個標題行啓動緩衝區,並在每個常規行中刷新緩衝區。所以如果有一個標題後標題不會打印(緩衝區將被清除),並且如果有一個常規的行將其「刷新」,則會被刷新到用戶。
(psudeo代碼)
for i in array:
if i is heading:
ob_end_clean();
ob_start();
echo "header $i";
else:
ob_end_flush();
echo "regular $i"
這個偉大的工程。
問題是,我有一個選項可以下載PDF格式的頁面,並打破了它。它的工作方式是,如果pdf標誌打開,在頁面頂部,緩衝區已啓動,並在代碼的底部,緩衝區被轉儲到一個變量中,並以字符串的形式發送到pdf api。
cannot modify header information - headers already sent.
我喜歡我的解決方案,但有一種方法,使其工作:現在,緩衝在ob_end_flush()函數,當我嘗試下載PDF產生這個錯誤發送給用戶?或者這是一個不好的解決方案?謝謝
而不是使用輸出緩衝區,你可以建立一個字符串,並在最後回顯它? –
@ Don'tPanic這浪費了大量的記憶,並且永久地緩衝。 – Brad
你可以刪除單擊PDF選項上的標題錯誤,即確定PDF選項已被點擊並在它ob_clean用於刪除標題錯誤 – DevLakshman