首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅在PHP数组中根据需要添加项

仅在PHP数组中根据需要添加项
EN

Stack Overflow用户
提问于 2013-02-22 11:20:14
回答 2查看 56关注 0票数 3

我有一些代码想要放到我的网站上,并在<body>之后使用位于设计之外的“flair”(Div)提供了一个空间。代码如下:

代码语言:javascript
复制
//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等。

代码语言:javascript
复制
<div id="flair-1">Content1</div>
<div id="flair-2">Content2</div>
<div id="flair-3">Content3</div>

但是如果$flair2/$flair3为空,它仍然打印一个div。我该如何解决这个问题呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-22 11:27:07

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

如下所示:

代码语言:javascript
复制
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";
        };
    };
};
票数 1
EN

Stack Overflow用户

发布于 2013-02-22 11:27:56

我怀疑您可以简单地在您的echo语句前面加上if($flairCode)。这将使您的内部循环:

代码语言:javascript
复制
foreach($flair as $flairCode){
    if($flairCode) echo "<div id=\"flair-".$fQty++."\">".$flairCode."</div>\n";
};

需要注意的几点:

  • 由于$flair数组总是相同的,所以在循环之外构造它(这也会让你只评估一次条件。
  • 使用$fQty++不足以保证ID的唯一性,特别是因为每次命中while时,值都会被重置)。我建议$fQty不应该是while条件的一部分,只是作为一个独立的计数。
  • 停止使用双引号。他们很慢。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15016262

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档