2014-10-17 118 views
0

道歉,如果这已经问(我无法找到一个答案),但我使用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循环一次获取的任何两个。

希望这是有道理的,并提前谢谢

+0

如果你需要2到环2,那么你可能不应该使用'foreach'摆在首位... – 2014-10-17 09:26:42

+0

@Bartdude不够公平! – 2014-10-17 09:27:51

回答

0

好的,我设法解决了这个问题......希望这会有所帮助。

<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> 
1

为什么这么复杂?使用简单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环路这些方法还有一个好处:你没有创建的所有对象的副本。如果这些对象不平凡,这可以产生巨大的差异。