好的,我有这个小数据库,其中包含名为" tag1"," tag2"," tag3"和" tag4"。现在,我显示这些标签以及相应的投资组合项目,但并非每个投资组合项目都有4个标签,这意味着有时这些标签字段中的一些可能是空的。
现在我在if循环中打印所有项目组合项目,因此对于每个项目我打印所有4个标记意味着如果某些标记字段为空,我也会收到空格(例如在我的列表中的子弹)出现,但显然没有文字)。
所以基本上我想要做的是,只打印标签,如果它不是空的。但我不明白如何使用多个标签来做到这一点?
这是我的代码:
print("
<ul class=\"tagList\">
<li>{$row['tag1']}</li>
<li>{$row['tag2']}</li>
<li>{$row['tag3']}</li>
<li>{$row['tag4']}</li>
</ul>
");
答案 0 :(得分:3)
在打印变量之前,您应该检查变量是否为空:
print("<ul class=\"tagList\">");
if($row['tag1']) {
print("<li>{$row['tag1']}</li>");
}
if($row['tag2']) {
print("<li>{$row['tag2']}</li>");
}
等
使用for循环可以让自己更轻松:
for($i = 1; $i < 5; $i++) {
if($row['tag'.$i]) {
print("<li>{$row['tag'.$i]}</li>");
}
}
答案 1 :(得分:0)
您可以使用PHP's empty comparison检查值是否为空。如果它不为空,则print为值,否则为print。
对于这么小的东西,你甚至可以将你的<li>
元素封装在空的比较中。
答案 2 :(得分:0)
这将转储整个$ row。如果这是你想要的。
$row=array_filter($row); // see below
if(sizeof($row)>0)
{
echo '<ul><li>'.implode('</li><li>', $row).'</li></ul>';
}
注意:array_filter将删除值为false,null和0
的元素答案 3 :(得分:0)
你可以使用array_filter($ row,'strlen');删除所有空元素,然后遍历$ row打印每个标记。
但是,我猜想$ row只包含tag1,tag2,tag3和tag4。所以你可以试试这个。
print "<ul class=\"tagList\">";
for($i=1;$i<5;$i++) {
if(strlen($row['tag'.$i])>0) {
print "<li>{$row['tag'.$i]}</li>";
}
}
print "</ul>";