不要在PHP中打印空字段

时间:2013-05-01 15:23:25

标签: php

好的,我有这个小数据库,其中包含名为" 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>

 ");

4 个答案:

答案 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>";