PHP:Foreach with“;如果其他“;陈述


PHP: Foreach with "if-else" statement

我正在对一个运行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>

根据我在浏览器检查器中看到的情况,在我的情况下,这段代码生成了两个ID为"banner0"answers"banner1"的横幅。描述文本应该位于代码的顶部(就在前面)。如果我使用一个简单的段落,它会显示两次——在每个横幅上方。。我应该如何更改它,使其只显示第二条横幅(id-banner1)上方的段落?我在想一个"如果其他"的说法,但我不确定这是否有效。。。有人能帮忙吗?我的PHP知识不多…:S

提前感谢!

谨致问候,Tsvetko-Krastev

然后您需要知道这是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>

如果我把代码写对了,$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>

非常感谢大家!!!尝试了两个版本,都出现了错误,但更仔细地查看代码和两个解决方案,我得出了这样的结论:

<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

谨致问候,Tsvetko-Krastev