【问题标题】:Looping inside looping with php循环里面用php循环
【发布时间】:2012-07-31 17:25:47
【问题描述】:

所以我希望完成的是:

<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 个 .product-box'es,里面有 6 个 &lt;li&gt;,来自这个 $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 类,并且每个 .product-box 内部应该有这 6 个项目,它们应该彼此继续,而不是重复相同$griditems 数组中存在的前 6 个。

我该怎么做?

【问题讨论】:

  • 如果我误解了您的问题,请纠正我,但您正在尝试单独列出 6 个项目,每个项目都来自 $griditems

标签: php foreach


【解决方案1】:

您可以使用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 可能是多余的。

【讨论】:

    【解决方案2】:

    您想使用 mod 运算符 (%) 来检查每第六个项目,然后关闭现有框并开始一个新框,如下所示:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-21
        • 2020-03-07
        • 2023-03-30
        • 2019-01-13
        • 2017-04-07
        • 2020-03-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多