仅在for循环中的第二项添加显示属性

时间:2015-12-01 03:01:05

标签: php css for-loop

我正在创建一个简单的图片库,要求首先显示第一张图片,而之后的图片应该具有display;none属性。我如何实现它,以便只有第一张图像不同?以下是我目前的代码。

<div class="content">
    <?php 
    foreach($variants['productVariants'][0]['productVariantImages'] as $variantImage){
        if(isset($variantImage) && $variantImage['visible']){
    ?>
    <img src="<?php echo $variantImage['imagePath']; ?>" class="image_<?php echo $variantImage['id']; ?>" style="display:none" alt="" />
    <?php }}?>
</div>

我当前的输出是

<div class="content">
    <img src="images/bigs/2.jpg" class="image_1" style="display:none" alt="">
     <img src="images/bigs/2.jpg" class="image_2" style="display:none" alt="">
     <img src="images/bigs/3.jpg" class="image_3" style="display:none" alt="">
</div>

我希望能够实现以下目标

<div class="content">
     <img src="images/bigs/1.jpg" class="image_1" alt="">
     <img src="images/bigs/2.jpg" class="image_2" style="display:none" alt="">
     <img src="images/bigs/3.jpg" class="image_3" style="display:none" alt="">
</div>

2 个答案:

答案 0 :(得分:2)

您有多种方式:

  1. 使用变量(例如$first),在循环前将其设置为true,在第一次迭代结束时将其设置为false

  2. 使用你的(可能是0索引的?)数组的键(例如foreach($variants['productVariants'][0]['productVariantImages'] as $key => $variantImage){),注意$key =>部分。然后,您可以检查循环中$key是否为0,这是您的第一个元素。

  3. 正如@alirezasafian建议的那样,只需使用CSS - 这可能是最通用的方法。

答案 1 :(得分:1)

你不需要使用php,你可以通过css。

来实现
.content img:not(:first-child)
{
    display: none;
}

.content img:not(:first-child) {
  display: none;
}
<div class="content">
  <img src="images/bigs/1.jpg" class="image_1" alt="1">
  <img src="images/bigs/2.jpg" class="image_2" alt="2">
  <img src="images/bigs/3.jpg" class="image_3" alt="3">
</div>