这是我的问题。我希望能够只缓冲表的内容而不是标题。是否有可能在php中暂停输出缓冲,以便我可以跳过表头上的缓冲并在实际内容的开头再次恢复?
<?php ob_start(); ?>
<table>
<tr>
<th>Account</th>
<th>Quarter</th>
<th>Amount</th>
</tr>
<?php
foreach($tc_item as $v){
if($v->dbl_amt != 0){
?>
<tr>
<!-- Nature of Collection -->
<td id="nature"><?php echo $v->strDescription; ?></td>
<!-- Account Code -->
<td id="account"><?php echo $v->str_details; ?></td>
<!-- Amount -->
<td id="amount"><?php echo number_format($v->dbl_amt,2, '.', ''); ?></td>
</tr>
<?php } ?>
<?php } ?>
</table>
<?php
$_SESSION['or_details'] = ob_get_contents();
?>
答案 0 :(得分:2)
如果你不想缓冲整个表,那么不要缓冲它:
<table>
<thead></thead>
<?php ob_start();?>
<tbody></tbody>
<?php $tbody = ob_get_flush(); ?>
</table>
如果你想缓冲整个表,但想要分别使用表体,那么再添加一个缓冲级别:
<?php ob_start();?>
<table>
<thead></thead>
<?php ob_start();?>
<tbody></tbody>
<?php $tbody = ob_get_flush(); ?>
</table>
<?php $table = ob_get_clean(); ?>
或者,您可以刷新当前缓冲区而不创建新缓冲区。我不建议这样做,因为它会使您的代码更难以遵循。这也很愚蠢,因为如果你只是在没有捕获字符串的情况下进行刷新,那么你最好不要在第一时间缓冲:
<?php ob_start()?>
<table>
<thead></thead>
<?php ob_flush();?>
<tbody></tbody>
<?php $tbody = ob_get_contents(); // only contains output since last flush ?>
</table>
<?php ob_end_flush(); ?>
答案 1 :(得分:0)
在标题
之后开始缓冲<table>
<tr>
<th>Account</th>
<th>Quarter</th>
<th>Amount</th>
</tr>
<?php
ob_start();
echo "table data";
ob_end_flush();