使用WHILE循环两次/暂时从WHILE环路中断



背景-建立了一个WordPress网站,并使用ACF高级自定义字段在我的页面中生成输入字段。

然后我填充了页面字段,这样我就可以生成/使用这个变量:

<?php
$case_study_image_gallery = get_field('case_study_image_gallery');
?>

然后,我在while循环中调用子字段,然后在使用变量分解图像数组时调用['url']。

<?php if( $case_study_image_gallery ) : ?>
<div class="case-study-slider">
<?php
while (have_rows('case_study_image_gallery')): the_row();
$case_study_image = get_sub_field('case_study_image');
?>
<div class="case-study-slide">
<img class="case-study-slider-image" src="<?php echo $case_study_image['url']; ?>">
</div>
<?php endwhile; ?>
</div>
<div class="case-study-slider-nav">
<?php
while (have_rows('case_study_image_gallery')): the_row();
$case_study_image = get_sub_field('case_study_image');
?>
<div class="case-study-nav-slide">
<img class="case-study-slider-nav-image" src="<?php echo $case_study_image['url']; ?>">
</div>
<?php endwhile; ?>
</div>
<?php endif; ?>

正如你所看到的,我已经把我的时间分成了多个部分,因为我需要对滑块图像和缩略图较小的图像使用相同的值。在这样做的时候,我必须把这个代码放在子场图像的两个使用之间。

<?php endwhile; ?>
</div>
<div class="case-study-slider-nav">
<?php
while (have_rows('case_study_image_gallery')): the_row();
$case_study_image = get_sub_field('case_study_image');
?>

这显然不会起作用,因为第一个循环已经烧穿了图像的实例。

我本质上是在寻找一种方法,在不重新启动/循环并触发下一行数据的情况下中断循环。像这样:

<?php if( $case_study_image_gallery ) : ?>
<div class="case-study-slider">
<?php
while (have_rows('case_study_image_gallery')): the_row();
$case_study_image = get_sub_field('case_study_image');
?>
<div class="case-study-slide">
<img class="case-study-slider-image" src="<?php echo $case_study_image['url']; ?>">
</div>
<?php 
HAVE A BREAK FROM THE WHILE; 
?>
</div>
<div class="case-study-slider-nav">
<?php
CONTINUE WHILE
?>
<div class="case-study-nav-slide">
<img class="case-study-slider-nav-image" src="<?php echo $case_study_image['url']; ?>">
</div>
<?php endwhile; ?>
</div>

我很感激有一些方法可以在循环完成后重置它,但我觉得应该有一种方法来利用我在这里尝试的代码。

回应Simonw16:

<div class="cs-slider">
<div class="case-study-slider">
<div class="case-study-slide"><img class="case-study-slider-image" src="https://localhost/materialshub/wp-content/uploads/2018/09/silicone-elastomer-tube.png"></div>
<div class="case-study-slide"><img class="case-study-slider-image" src="https://localhost/materialshub/wp-content/uploads/2018/09/silicon-sputtering-target.jpeg"></div>
<div class="case-study-slide"><img class="case-study-slider-image" src="https://localhost/materialshub/wp-content/uploads/2018/09/zirconium-lump.jpg"></div>
</div>
<div class="case-study-slider-nav">
<div class="case-study-nav-slide"><img class="case-study-slider-nav-image" src="https://localhost/materialshub/wp-content/uploads/2018/09/silicone-elastomer-tube.png"></div>
<div class="case-study-nav-slide"><img class="case-study-slider-nav-image" src="https://localhost/materialshub/wp-content/uploads/2018/09/silicon-sputtering-target.jpeg"></div>
<div class="case-study-nav-slide"><img class="case-study-slider-nav-image" src="https://localhost/materialshub/wp-content/uploads/2018/09/zirconium-lump.jpg"></div>
</div>
</div>

你可以这样做吗?

```

<?php
$image_urls = [];
while (have_rows('case_study_image_gallery')): 
the_row();
$image_urls[] = get_sub_field('case_study_image');
endwhile;
?>
<div class="case-study-slider">
<?php foreach($image_urls as $image_url): ?>
<div class="case-study-slide">
<img class="case-study-slider-image" src="<?php echo $image_url; ?>">
</div>
<?php endforeach; ?>
</div>
<div class="case-study-slider-nav">
<?php foreach($image_urls as $image_url): ?>
<div class="case-study-nav-slide">
<img class="case-study-slider-nav-image" src="<?php echo $image_url; ?>">
</div>
<?php endforeach; ?>
</div>

```

最新更新