2011-07-28 77 views
0

我有以下的PHP,你好了与嵌套foreach循环

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

我想实现是创建嵌套多达6 div秒的li,一旦有6个div小号我想创建一个新的li。上面的代码目前正在创建以下,

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

...然而,应该只有2个div在我li由于产品数组的大小。

+0

您是否尝试过检查的价值$算什么? 'echo $ count'? –

回答

0

由于两个循环都是嵌套的,因此您正循环2 x 2次而不是2次。只能使用forforeach

要回答你的真正问题:怎么样像...

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

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

请注意,这只是一个代码示例。您仍然需要测试边缘情况(0,5,6)并查看是否有空的“

  • ”。 – giraff

    0

    我刚才编辑您的线路:

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

    希望帮助