我有以下代码:
foreach ($model->details as $detail) {
if ($detail->Title) echo $detail->Title;
if ($detail->Info) echo '<br />'.$detail->Info;
}
现在我想添加这样的内容:
'<h2>Details</h2>'.'<hr />'
到输出的顶部,但仅当满足foreach子句中的if时。如果没有满足任何一个,我根本不想显示任何内容。
有些人可以帮我调整代码来实现这个目标吗?
答案 0 :(得分:2)
喜欢这样吗?
foreach ($model->details as $detail) {
if ($detail->Title && $detail->Info) {
echo '<h2>Details</h2><hr />';
}
if ($detail->Title) echo $detail->Title;
if ($detail->Info) echo '<br />'.$detail->Info;
}
附录:我可能宁愿做这样的事情,也可以在没有标题时避免不必要的<br />
,但只有信息
foreach ($model->details as $detail) {
$text = array();
if ($detail->Title) $text[] = $detail->Title;
if ($detail->Info) $text[] = $detail->Info;
if (!empty($text)) {
echo '<h2>Details</h2><hr />';
echo implode('<br />', $text);
}
}
答案 1 :(得分:1)
您需要输出到字符串,或使用output buffering。以下示例使用字符串方法:
$sOutputHtml = NULL;
foreach ($model->details as $detail) {
if ($detail->Title) $sOutputHtml .= $detail->Title;
if ($detail->Info) $sOutputHtml .= '<br />'.$detail->Info;
}
if ($sOutputHtml !== NULL) {
echo '<h2>Details</h2>'.'<hr />' . $sOutputHtml;
}