1

我目前正在努力将 foreach 循环分类为自己的 div 和 ul,这就是我目前拥有的:

<ul class="thumbnails parts-page">
<?php $show = false; ?>
<?php foreach ($this->items as $item) : ?>
    <?php if($item->state == 1 || ($item->state == 0 && JFactory::getUser()->authorise('core.edit.own',' com_parts'))):
        $show = true;
    ?>
        <li class="span4">
            <a href="<?php echo $item->brand_link; ?>" style="background:url(<?php echo $item->brand_image; ?>) no-repeat center center #FFF; "  class="thumbnail parts" target="_blank">
            </a>
        </li>
    <?php endif; ?>

<?php endforeach; ?>
</ul>

基本上这会产生:

<ul class="thumbnails parts-page">
            <li class="span4">
            <a href="http://www.canecreek.com/" style="background: url('/torqzone/images/brands/cane-creek.png') no-repeat center center #FFF; "  class="thumbnail parts" target="_blank">
            </a>
        </li>

            <li class="span4">
            <a href="http://www.amclassic.com/en/" style="background: url('/torqzone/images/brands/american-classic.png') no-repeat center center #FFF; "  class="thumbnail parts" target="_blank">
            </a>
        </li>

            <li class="span4">
            <a href="http://www.avid.com/US/" style="background: url('/torqzone/images/brands/avid.png') no-repeat center center #FFF; "  class="thumbnail parts" target="_blank">
            </a>
        </li>
</ul>

但我需要拆分它,以便每 9 个项目都是独立的:

<ul class="thumbnails parts-page">
9ITEMS
</ul>

我尝试了在网上找到的各种解决方案,但似乎没有任何效果..

非常感谢任何帮助。

4

7 回答 7

2

一个非常简单易读的解决方案是使用array_chunk

<?php foreach (array_chunk($this->items, 9) as $items): ?>
  <ul>
    <?php foreach ($items as $item): ?>     
      <!-- your code -->
    <?php endforeach; ?>
  </ul>
<?php endforeach; ?>

是的,这是一个额外的循环,但更具可读性。

于 2013-07-26T13:32:37.393 回答
1

使用这样的东西:

echo '<ul ...>';
$i = 0;
foreach ( ...... ) {
  if (++$i % 9 == 0) echo '</ul><ul ....>';

  // your code here

}
echo '</ul>';
于 2013-07-26T13:24:57.830 回答
0

完成此操作的最简单方法是创建一个每次加一的计数器。例如,在您的代码开头声明 $count 并在您的每个语句中声明 $count++。然后,您可以创建一个 IF 语句,说明如果计数为 9,则创建新的 UL。

似乎人们正试图让这变得过于复杂。

于 2013-07-26T13:25:32.353 回答
0

使用计数器变量怎么样?

$counter = 0;
<?php $show = false; ?>
<?php foreach ($this->items as $item) : ?>
    <?php if ($counter % 9 == 0) 
         echo '<ul class="thumbnails parts-page">';?>


    <?php if($item->state == 1 || ($item->state == 0 && JFactory::getUser()->authorise('core.edit.own',' com_parts'))):
        $show = true;
    ?>
        <li class="span4">
            <a href="<?php echo $item->brand_link; ?>" style="background:url(<?php echo $item->brand_image; ?>) no-repeat center center #FFF; "  class="thumbnail parts" target="_blank">
            </a>
        </li>
    <?php endif; ?>

   <?php if ($counter % 9 == 0) 
         echo '</ul>';?>

<?php $counter +=1 ?>
<?php endforeach; ?>

通过这种方式,您将每 9 个列表项打印ul标签(将它们放在里面)。(请测试代码,因为我现在没有环境)

于 2013-07-26T13:24:50.563 回答
0

设置一个等于 1 的变量。每次运行循环时递增它。如果 > 9,则创建一个新的 ul,否则将其添加到旧的 ul。

于 2013-07-26T13:20:52.913 回答
0

据我了解,您想要的是每个无序列表必须仅包含 9 个项目。如果是这种情况,您可以使用计数变量

<?php $show = false; $count=0; ?>
<?php foreach ($this->items as $item) : ?>
    <?php if($item->state == 1 || ($item->state == 0 && JFactory::getUser()->authorise('core.edit.own',' com_parts'))):
        $show = true;
    ?>
 <?php if($count%9==0) echo'<ul class="thumbnails parts-page">'; ?>
        <li class="span4">
            <a href="<?php echo $item->brand_link; ?>" style="background:url(<?php echo $item->brand_image; ?>) no-repeat center center #FFF; "  class="thumbnail parts" target="_blank">
            </a>
        </li>
  <?php if($count%9 ==0) echo '</ul>'; ?>
   <?php $count++; ?>
    <?php endif; ?>

<?php endforeach; ?>
</ul>
于 2013-07-26T13:32:32.600 回答
0
<?php 
$i=0;
foreach ($this->items as $item) : ?>
    <?php if($item->state == 1 || ($item->state == 0 && JFactory::getUser()->authorise('core.edit.own',' com_parts'))):
        $show = true;
++$i;    
?>
        <li class="span4">
            <a href="<?php echo $item->brand_link; ?>" style="background:url(<?php echo $item->brand_image; ?>) no-repeat center center #FFF; "  class="thumbnail parts" target="_blank">
            </a>
        </li>
<?php if($i>8): $i=0; ?>
</ul><ul class="thumbnails parts-page">
<?php endif; ?>
    <?php endif; ?>

<?php endforeach; ?>

而不是上面的代码替换这个

于 2013-07-26T13:22:52.503 回答