显示带有自定义元的图像数组 - 如何计算循环?

display an array of images with custom meta - how to count the loop?

我遇到了一个可能非常基本的问题,但我就是找不到解决方案。

这是我正在尝试做的事情:我在网站上有一个图片库,每个图片都可以使用自定义元字段设置为 "featured"。我想显示该图库中的前五张精选图片。所以我需要:从图库中获取图像数组,遍历该数组并制作一个仅包含 "featured" 图像的新图像数组,然后遍历该数组并仅显示前五个。

我可以成功获取数组并获取数组中的特色图片,但我知道我设置的计数器有误,因为输出计算的是图库中的所有图片,而不仅仅是标记为的图片特色。因此我只得到 3 张图片——因为前五张画廊图片,只有 3 张被标记为特色。我明白这么多,但我对如何调整这一点感到困惑。

代码如下:

    <?php $images = get_field('image_gallery', 'option'); // get the array of gallery images

    if( $images ): ?>

    <?php 
    $i = 0;
    foreach( $images as $image ): 

    $featured = get_field('feature_this_image', $image['id']); // get the images that are marked featured

    if ($featured && $i <= 4 ) { ?>

    <div class="gallery-image"><a href="<?php echo $image['url']; ?>"><img src="<?php echo $image['sizes']['gallery-thumb']; ?>" alt="<?php echo $image['alt']; ?>" /></a></div>

    <?php } $i++; endforeach; ?>

    <?php endif; ?>

如有任何帮助,我们将不胜感激。我显然还在学习 PHP 并且我不太清楚我是否需​​要另一个 foreach 循环或移动计数器或......?我不断移动计数器并创建第一张图像的循环,或五张图像的无限循环...

提前感谢您的阅读。

<?php 

   $images = get_field('image_gallery', 'option');
   if( $images )
   {
      $i = 0;
      foreach( $images as $image )
      { 
         $featured = get_field('feature_this_image', $image['id']);
         if ($featured && $i <= 4 ) 
         { 

            echo "<div class='gallery-image'>";
            echo "<a href=".$image['url'].">";
            echo "<img src=".$image['sizes']['gallery-thumb']."  alt=".$image['alt']."/>";
            echo "</a>";
            echo "</div>";

            $i++; 
         }
      } 

?>

您只需将 $i 增量移动到 if 块内。我还对代码进行了一些重构,使其看起来更简洁。