2014-10-17 154 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環路這些方法還有一個好處:你沒有創建的所有對象的副本。如果這些對象不平凡,這可以產生巨大的差異。