PHP foreach将每9项排序为列表和div
我目前正在努力将foreach循环分为自己的div和ul,以下是我目前的情况:PHP foreach将每9项排序为列表和div,php,foreach,Php,Foreach,我目前正在努力将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::getU
<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>
9项
我在网上找到了各种各样的解决方案,但似乎都不管用
非常感谢您的帮助。将变量设置为1。每次运行循环时都要增加它。如果其>9,则创建一个新ul,否则将其添加到旧ul。
<?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; ?>
代替上述代码,替换此使用计数器变量如何
$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; ?>
$counter=0;
这样,您将每隔9项打印一次ul标签(将它们放在列表中)。
(请测试代码,因为我现在没有用于测试的环境)使用类似以下内容:
echo '<ul ...>';
$i = 0;
foreach ( ...... ) {
if (++$i % 9 == 0) echo '</ul><ul ....>';
// your code here
}
echo '</ul>';
echo'';
$i=0;
foreach(……){
如果(+$i%9==0)回显“
”;
//你的代码在这里
}
回声“
”;
实现这一点的最简单方法是创建一个每次递增一的计数器。例如,在代码开头声明$count,在For-each语句中声明$count++。然后,您可以创建一个IF语句,该语句表示如果计数为9,则创建新的UL
似乎人们想把这件事弄得太复杂了。根据你的了解,你想要的是每个无序的列表必须只包含9项。。如果是这种情况,您可以使用count变量
<?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>
一个非常简单易读的解决方案是:
是的,这是一个额外的循环,但可读性更强。您尝试过哪些解决方案?它们是否在foreach循环中包含计数器和标签?是的,但随后它就变成了ul中的ul和ul中的ul等等。当它达到
>8
时,也重置$i
是的,我很高兴你从评论中删除了这一点,并将其加入到答案中。
<?php foreach (array_chunk($this->items, 9) as $items): ?>
<ul>
<?php foreach ($items as $item): ?>
<!-- your code -->
<?php endforeach; ?>
</ul>
<?php endforeach; ?>