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

content = $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ループ内で、値が存在するかどうかを確認し、存在する場合は次の値emptycontinue移動 (つまり、スキップ) できます。

そのようです:

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)echo ステートメントの先頭に追加するだけでよいと思います。それはあなたの内側のループを作るでしょう:

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

注意すべき点:

  • $flair配列は常に同じであるため、ループの外で構築します (これにより、条件を 1 回だけ評価することもできます。
  • $fQty++特に値にヒットするたびwhileに値がリセットされるため、使用するだけでは一意の ID を保証するのに十分ではありません。私は、状態の一部ではなく、単に独立した集計としてとどまる$fQtyべきであることをお勧めします.while
  • 二重引用符の使用を停止します。彼らは遅いです。
于 2013-02-22T03:27:56.380 に答える