2014-10-17 3 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' в первую очередь ... –

+0

@Bartdude Fair достаточно! –

ответ

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 цикла эти подходы имеют еще одно преимущество: не создавать копии всех объектов , Это может иметь огромное значение, если эти объекты нетривиальны.

Смежные вопросы