道歉,如果已经有人问这个问题(我找不到答案),但我正在使用PHP而我正在构建一个滑块,但是每张幻灯片需要两张图片,而不是一张。因此,理论上foreach()
需要包含两个。
设置示例如下:
<?php foreach ($page->images as $image) : ?>
<img src="<?php echo $image->url; ?>"/>
<?php endforeach; ?>
我以为我可以做点算......
<?php $index = 0; foreach ($page->images as $image) : ?>
<img src="<?php echo $image->url; ?>"/>
<?php $index++; ?>
<?php if ( $index % 2 == 0 && $index !=count($page->images) ) : ?>
<li></li>
<?php endif; ?>
<?php endforeach; ?>
但是我有点困惑,因为这会每2个插入一些东西......不包括foreach循环一次取出的两个。
希望这有意义,并提前感谢
答案 0 :(得分:2)
为什么这么复杂?请改用简单的for
循环:
<?php for ($i=0; $i<count($page->images)-1; $i+=2) { ?>
<img src="<?php echo $page->images[$i]->url; ?>"/>
<img src="<?php echo $page->images[$i+1]->url; ?>"/>
<?php } ?>
或者更优雅,do/while
循环:
<?php $i=0; do { ?>
<img src="<?php echo $page->images[$i++]->url; ?>"/>
<img src="<?php echo $page->images[$i++]->url; ?>"/>
<?php } while ($i<count($page->images)) ?>
与使用foreach
循环相比,这些方法还有另一个优点:您不会创建所有对象的副本。如果这些对象不重要,这可以产生巨大的差异。
答案 1 :(得分:1)
好的,我设法解决了这个问题......希望它会有所帮助。
<div class="each-slide">
<?php $index = 0; foreach ($page->images as $image) : ?>
<img src="<?php echo $image->url; ?>"/>
<?php $index++; ?>
<?php if ( $index % 2 == 0 && $index !=count($page->images) ) : ?>
</div><div class="each-slide">
<?php endif; ?>
<?php endforeach; ?>
</div>