如何在foreach循环中每10条记录插入<ul>标签

6
<?php foreach($products as $product) : ?>

<li><a href="<?php echo base_url(); ?>main/products/<?php echo $product->id; ?>">
<?php echo $product->name; ?> </a></li>

<?php endforeach; ?>

上面的代码获取了一个DB中的所有记录并生成链接。表中有100条记录 - 我想将设计分成5列。因此,我将在CSS中完成这个任务,但我需要能够包含

<ul> on every 20 records</ul>

如何计算循环次数并执行此操作?


2
还有人听到嘶嘶声吗?我问了一下隔壁的同事,他说他认为那是嗡嗡声。也许我们应该写一个程序来解决这个问题... (http://rosettacode.org/wiki/FizzBuzz) - Scott Chamberlain
5个回答

8

像这样做,这会解决你的问题。

 <?php 
 *$i = 0;*
 echo "<ul>";
 foreach($products as $product) : 
 if($i % 20 == 0) echo "</ul><ul>"; 
?>
<li><a href="<?php echo base_url(); ?>main/products/<?php echo $product->id; ?>">
<?php echo $product->name; ?> </a></li>
<?php 
 //if($i % 20 == 0) echo "</ul>";
 $i += 1;
 endforeach; 
 echo "</ul>";
 ?>

*编辑- 将 $i = 0; 设置为数组从 [0] 开始计数,因为将其设置为 [1] 会使第一个 col 的值为19而不是20。通过将其设置为 [0],每个 col 的值都为20。 :) 再次感谢 ~fabio


没问题,跑得很好。我还修改了它来交换内部的 ul 标签,也成功了。 - MrPizzaFace

2

这应该可以工作

<?php $products = array('1','2','3','4','5','6','8', 9, 10, 11, 12);?>
<?php $count = 0?>
<?php foreach($products as $product) : ?>
<?php $count = $count + 1; ?>
<?= (($count == 5) ? "<ul>" : '' )?>
<li><a href="<?php echo base_url(); ?>main/products/"></a></li>

<?= (($count == 5) ? "</ul>" : '')?>
<?php (($count == 5) ? $count = 0 : '' )?>
<?php endforeach; ?>

2
 <?php 
     $i = 1;
     echo "<ul>";
     foreach($products as $product) : 
     if($i % 20 == 0) echo "</ul><ul>"; 
    ?>
    <li><a href="<?php echo base_url(); ?>main/products/<?php echo $product->id; ?>">
    <?php echo $product->name; ?> </a></li>
    <?php 
     $i += 1;
      endforeach; echo "</ul>"; ?>

这段代码每20条记录插入1个<ul></ul>,但是没有正确工作。 - MrPizzaFace
你缺少了最后的</ul>标签,请查看已勾选的解决方案。但还是谢谢! - MrPizzaFace

0
<?php    $i=0;
         echo "<ul>";
         foreach($products as $product) :
         if($i%8==0&&$i!=0) echo "</ul><ul>"; ?>

         <li>
          <a href="<?php echo base_url(); ?>main/products/<?php echo $product->id; ?>">
           <?php echo $product->name; ?>
          </a>
         </li>

<?php    $i+=1;
         endforeach;
         echo "</ul>"; ?>

0
请查看PHP的array_slice方法。它可以将数组切片成每个包含20个对象的小数组。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接