我有一个函数,回声出一个网页的共同代码。如果我像这样写代码:
echo '<tr>';
CSCell("{$row['home_team']}/{$row['home_team']}",'home_home',$row, 1);
echo '</tr><tr>';
CSCell("{$row['home_team']}/Draw",'home_draw',$row, 1);
echo '</tr><tr>';
它工作没有问题。如果我这样做:
echo '<tr>' . CSCell("{$row['home_team']}/{$row['home_team']}",'home_home',$row, 1) . '</tr>';
echo '<tr>' . CSCell("{$row['home_team']}/Draw",'home_draw',$row, 1) . '</tr>';
它为每行代码输出一个额外的空行。大概它最初会发出
null
(因为没有指定返回),然后再次开始echo(不重新调用函数&打印& lt; tr> 空字符串 & lt;/tr>)。如何阻止它重新响应tr
HTML?该功能仅包含td
回波数据?
我现在懒得让它返回,因为它在需要回声的地方被引用的其他部分。如何修改函数,使其可以用于回显和返回?
由于您已经依赖于其他代码中的输出,因此只需向该函数添加第五个参数以将其告知echo
或return
:
function CSCell($a, $b, $c, $d, $return=false) {
// build $output
if($return) { return $output; }
echo $output;
}
然后调用$return = true
:
echo '<tr>' . CSCell("{$row['home_team']}/Draw", 'home_draw', $row, 1, true) . '</tr>';
如果不能修改函数,则构建一个包装器并缓冲输出和返回。我不知道函数是什么样子的,所以你需要检查参数或依赖CSCell()
函数来验证它们:
function _cscell($a, $b, $c, $d) {
ob_start();
CSCell($a, $b, $c, $d);
return ob_end_clean();
}
然后调用包装器函数:
echo '<tr>' . _cscell("{$row['home_team']}/Draw", 'home_draw', $row, 1) . '</tr>';