2011-07-28 78 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> 
    

    希望幫助