3

我有一些代码想要放入我的网站,并在<body>使用位于设计之外的“天赋”(div)后立即提供了一个空间。这是代码:

//Add Flair Containers as needed
if($flairs>0){
  echo "<!--Flair Graphics (if needed)-->\n";
    while($fQty = --$flairs+1){ //-- subracts 1, +1 accounts for 1 being 0
       $flair = array($flair1, $flair2, $flair3);
        foreach($flair as $flairCode){
          echo "<div id=\"flair-".$fQty++."\">".$flairCode."</div>\n";
        };
    };
};

它可以正确打印,其中内容 = $flair1、$flair2 等等。

<div id="flair-1">Content1</div>
<div id="flair-2">Content2</div>
<div id="flair-3">Content3</div>

但如果 $flair2/$flair3 为空,它仍然会打印一个 div。我怎样才能解决这个问题?

4

2 回答 2

1

在您的foreach循环中,您可以检查该值是否是,如果是empty,则continue(即跳过)到下一个值。

像这样:

if($flairs>0){
  echo "<!--Flair Graphics (if needed)-->\n";
    while($fQty = --$flairs+1){ //-- subracts 1, +1 accounts for 1 being 0
       $flair = array($flair1, $flair2, $flair3);
        foreach($flair as $flairCode){
          if (empty($flairCode)) continue;
          echo "<div id=\"flair-".$fQty++."\">".$flairCode."</div>\n";
        };
    };
};
于 2013-02-22T03:27:06.607 回答
1

我怀疑您可以简单地if($flairCode)添加到您的回声语句之前。这将使您的内部循环:

foreach($flair as $flairCode){
    if($flairCode) echo "<div id=\"flair-".$fQty++."\">".$flairCode."</div>\n";
};

需要注意的几点:

  • 由于$flair数组总是相同的,所以在循环之外构造它(这也可以让你只评估一次条件。
  • 使用$fQty++不足以保证唯一的 ID,特别是因为每次它达到while该值时都会重置。我建议$fQty不应该成为while条件的一部分,而只是作为一个独立的计票。
  • 停止使用双引号。他们很慢。
于 2013-02-22T03:27:56.380 回答