使用自定义元数据显示图像数组 - 如何计算循环?

时间:2015-04-06 20:43:01

标签: php arrays foreach

我有一个可能非常基本的问题,但我无法找到解决方案。

以下是我要做的事情:我在网站上有一个图片库,每个图片都可以使用自定义元字段设置为“精选”。我想显示这个画廊的前五个特色图片。所以我需要:从图库中获取图像数组,通过该数组并使用“特色”图像创建一个新的图像数组,然后浏览该数组并仅显示前五个。

我可以成功获取数组并获取数组中的特色图像,但我知道我设置我的计数器错误,因为输出正在计算库中的所有图像,而不仅仅是标记为特征的图像。因此,我只获得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循环或移动计数器或......?我继续移动计数器并创建第一个图像的循环,或五个图像的无限循环......

提前感谢您的阅读。

1 个答案:

答案 0 :(得分:1)

<?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++; 
         }
      } 

?>

你只需要移动if块中的$ i增量。我还重新编写了一些代码,使它看起来更清晰。