Здравствуйте, цикл for с вложенным foreach - PullRequest
0 голосов
/ 28 июля 2011

У меня есть следующий php,

 <ul>
<?php $count = count($products); ?>
            <?php for($i=0; $i < $count; $i++ ): ?>
            <li>
                <?php foreach ($products as $k => $v) : ?>
                    <div>
                        <a href="">
                            <img src="<?php echo base_url(); ?>media/images/products/<?php echo $v['product_image_small']; ?>" alt="<?php echo $v['product_title']; ?>" rel="<?php echo $v['product_id']; ?>"/>
                        </a>
                    </div>
                <?php endforeach; ?>
           </li>
            <?php endfor; ?>
        </ul>

То, чего я хочу достичь, - это создать li, вложенный до 6 div с, и как только есть 6 div с Iхочу создать новый li.Приведенный выше код в настоящее время создает следующее,

<li>  
<div></div>  
<div></div>  
<div></div>  
<div></div>  
</li>

... однако в моем li должно быть только 2 div s из-за размера массива products.

Ответы [ 2 ]

0 голосов
/ 29 июля 2011

Я только что отредактировал твои строки:

 <ul>
<?php $count = count($products); ?>
            <?php for($i=0; $i < $count; $i++ ): ?>
            <li>
                <?php foreach ($products as $k => $v) : ?>
                    <?php if($i % 4 == 0) echo '</li><li>'; ?>
                    <div>
                        <a href="">
                            <img src="<?php echo base_url(); ?>media/images/products/<?php echo $v['product_image_small']; ?>" alt="<?php echo $v['product_title']; ?>" rel="<?php echo $v['product_id']; ?>"/>
                        </a>
                    </div>
                <?php endforeach; ?>
           </li>
            <?php endfor; ?>
        </ul>

Надеюсь, что поможет

0 голосов
/ 28 июля 2011

Вы выполняете цикл 2 x 2 раза вместо 2, поскольку оба цикла являются вложенными. Используйте только for или foreach.

Чтобы ответить на ваш настоящий вопрос: как насчет чего-то вроде ...

echo "<li>";
for ($i = 0; $i < $count; $i++)
{
   // ...

   if ($i % 6 == 5)
     echo "</li><li>";    
}
echo "</li>";
...