0

好的,所以我有一个包含名为“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

4 回答 4

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>");
    }

}
于 2013-05-01T15:27:49.970 回答
0

您可以使用PHP 的空比较来检查值是否为空。如果它不为空,则打印该值,否则,不打印任何内容。

对于这么小的东西,您甚至可以将<li>元素封装在空比较中。

于 2013-05-01T15:27:41.283 回答
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

于 2013-05-01T15:36:51.063 回答
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>"; 
于 2013-05-01T15:40:47.597 回答