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


Add display property only from second item in 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>

您有多种方法:

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

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

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

你不需要使用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>