使用php在循环内部循环


Looping inside looping with php

所以我希望实现的是:

<div class="product-box">
    <ul class="product-list">
    <li><a href="http://sauritchsurfboards.com/longboards.html" title="Surfboards _ San Diego Surfboard Shapers _ Sauritch Surfboards-2" target="_blank"><span>Surfboards _ San...</span>
    </a></li>
    <li><a href="http://sauritchsurfboards.com/longboards.html" title="Surfboards _ San Diego Surfboard Shapers _ Sauritch Surfboards-2" target="_blank"><span>Surfboards _ San...</span></a></li>
    <li><a href="http://sauritchsurfboards.com/longboards.html" title="Surfboards _ San Diego Surfboard Shapers _ Sauritch Surfboards-2" target="_blank"><span>Surfboards _ San...</span></a></li>
    <li><a href="http://sauritchsurfboards.com/longboards.html" title="Surfboards _ San Diego Surfboard Shapers _ Sauritch Surfboards-2" target="_blank"><span>Surfboards _ San...</span></a></li>
    <li><a href="http://sauritchsurfboards.com/longboards.html" title="Surfboards _ San Diego Surfboard Shapers _ Sauritch Surfboards-2" target="_blank"><span>Surfboards _ San...</span></a></li>
    <li><a href="http://sauritchsurfboards.com/longboards.html" title="Surfboards _ San Diego Surfboard Shapers _ Sauritch Surfboards-2" target="_blank"><span>Surfboards _ San...</span></a></li>
    </ul>
</div>

我有一个$griditems,它是数据库中的一个数组。

我想展示6个内部有6个<li>的产品,这是来自这个$griditems

通常我会做:

<div class="product-box">
    <ul class="product-list">
<?php
$count=1;
foreach($griditems as $item)
{
  if($count == 6) { break; }
?>
<li><a>.....</a></li>
<?php
 $count++;
}
?>
</ul>
</div>

但在这种情况下,这将不起作用,因为我希望有6个这样的.product-box类,每个.productbox中都应该有这6个项,它们应该相互延续,而不是重复$griditems数组中存在的前6个项。

我该怎么做?

您可以使用array_chunk将数组拆分为特定最大长度的子数组。

$chunks = array_chunk($griditems, 6);
foreach($chunks as $chunk) {
    echo "<div><ul>";
    foreach($chunk as $item) echo "<li>".$item."</li>";
    echo "</ul></div>";
}

顺便说一句,仅仅使用一个HTML元素来容纳一个其他的HTML元素并不是一种很好的做法,所以您的DIV可能非常糟糕。

您希望使用mod运算符(%)检查每六个项目,然后关闭现有框并启动一个新框,类似于以下内容:

?>
<li><a>.....</a></li>
<?php
    if ($count % 6 == 0) { ?>
    </ul>
    </div>
    <div  class="product-box">
    <ul class="product-list">
<?php }
...

我可能误解了你的问题,但我认为这会有所帮助:

$count = 0;
echo "<ul>"
foreach($griditems as $item) {
    if (++$count % 6 == 0) {
        echo "</ul><ul>";
    }
    echo "<li><a>....</a></li>";
}
echo "</ul>";