返回或返回函数


echo or return from a function

我有一个函数,回声出一个网页的共同代码。如果我像这样写代码:

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回波数据?

我现在懒得让它返回,因为它在需要回声的地方被引用的其他部分。如何修改函数,使其可以用于回显和返回?

由于您已经依赖于其他代码中的输出,因此只需向该函数添加第五个参数以将其告知echoreturn:

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>';