【问题标题】:PHP: Foreach with "if-else" statementPHP:带有“if-else”语句的 Foreach
【发布时间】:2016-05-12 09:25:53
【问题描述】:

我正在对运行 OpenCart 2.2 的在线商店进行一些更改。 在左侧的类别下方浏览时,有 2 个轮播显示不同的促销活动。我想修改它,在第二个轮播之前有一个描述文本。为此,我应该编辑模板文件。这就是我迷路的地方.. 这是模板文件中的代码:

<div id="banner<?php echo $module; ?>" class="owl-carousel">
  <?php foreach ($banners as $banner) { ?>
  <div class="item">
    <?php if ($banner['link']) { ?>
    <a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" class="img-responsive" /></a>
    <?php } else { ?>
    <img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" class="img-responsive" />
    <?php } ?>
  </div>
  <?php } ?>
</div>

我在浏览器检查器中看到,在我的例子中,这段代码生成了 2 个带有 id 的横幅 - “banner0”和“banner1”。描述文本应该放在代码的顶部(就在 之前)。如果我使用一个简单的段落,它会显示两次 - 在每个横幅上方。我应该如何更改它以便它仅在第二个横幅(id - banner1)上方显示段落? 我正在考虑一个 if-else 语句,但我不确定这是否会起作用......有人可以帮忙吗?我对PHP的了解并不多...:S

提前致谢!

最好的问候, 茨维特科·克拉斯特夫

【问题讨论】:

    标签: php if-statement opencart opencart2.x opencart-module


    【解决方案1】:

    那么你需要知道这是第二次循环foreach。所以更改 foreach 以包含这样的索引,并在循环内添加一个测试 $i == 1

    <div id="banner<?php echo $module; ?>" class="owl-carousel">
    
      <?php //foreach ($banners as $banner) { 
            foreach ($banners as $i => $banner) { 
      ?>
    
    
      <div class="item">
    
        <?php if ($banner['link']) { 
            if ( $i == 1 ) {
                echo 'YOUR HTML CONTAINING SOME TEXT HERE';
            }
        ?>
        <a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" class="img-responsive" /></a>
        <?php } else { ?>
        <img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" class="img-responsive" />
        <?php } ?>
      </div>
      <?php } ?>
    </div>
    

    【讨论】:

      【解决方案2】:

      如果我得到正确的代码,$module 是 0/1(如果 id 得到值 banner0banner1),那么这应该可以工作:

      <div id="banner<?php echo $module; ?>" class="owl-carousel">
        <?php foreach ($banners as $banner) { ?>
            <?php if ($module == "1") { ?>
                <p>Your description</p>
            <?php } ?>
          <div class="item">
              <?php if ($banner['link']) { ?>
                  <a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" class="img-responsive" /></a>
              <?php } else { ?>
                  <img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" class="img-responsive" />
              <?php } ?>
          </div>
      <?php } ?>
      </div>
      

      【讨论】:

        【解决方案3】:

        非常感谢你们!!!尝试了这两个版本,他们都抛出了一个错误,但更仔细地查看代码和你的解决方案,我想出了这个:

        <div id="desc<?php echo $module; ?>">
            <?php if ($module == 1) { ?>
                <p>Description</p>
            <?php } ?>
        <div id="banner<?php echo $module; ?>" class="owl-carousel">
          <?php foreach ($banners as $banner) { ?>
          <div class="item">
            <?php if ($banner['link']) { ?>
            <a href="<?php echo $banner['link']; ?>"><img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" class="img-responsive" /></a>
            <?php } else { ?>
            <img src="<?php echo $banner['image']; ?>" alt="<?php echo $banner['title']; ?>" class="img-responsive" />
            <?php } ?>
          </div>
          <?php } ?>
        </div>
        </div>
        

        再次非常感谢您的快速回复和帮助! :) :3

        最好的问候, 茨维特科·克拉斯特夫

        【讨论】:

          猜你喜欢
          • 2019-12-12
          • 2020-03-20
          • 1970-01-01
          • 1970-01-01
          • 2017-08-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-07-02
          相关资源
          最近更新 更多