两个项目每foreach循环
问题描述:
道歉,如果这已经问(我无法找到一个答案),但我使用PHP和我建立一个滑块,但想每张幻灯片的两幅图像,没有之一。所以,理论上foreach()
需要包含两个每个。两个项目每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循环一次获取的任何两个。
希望这是有道理的,并提前谢谢
答
好的,我设法解决了这个问题......希望这会有所帮助。
<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>
答
为什么这么复杂?使用简单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
环路这些方法还有一个好处:你没有创建的所有对象的副本。如果这些对象不平凡,这可以产生巨大的差异。
如果你需要2到环2,那么你可能不应该使用'foreach'摆在首位... – 2014-10-17 09:26:42
@Bartdude不够公平! – 2014-10-17 09:27:51