每个foreach循环两个项目

时间:2014-10-17 09:24:27

标签: php foreach

道歉,如果已经有人问这个问题(我找不到答案),但我正在使用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循环一次取出的两个。

希望这有意义,并提前感谢

2 个答案:

答案 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>