使用无序列表拆分Foreach输出

时间:2018-04-14 02:19:02

标签: php opencart e-commerce

我正在尝试将品牌菜单添加到电子商务网站(PHP MVC结构)中。我已成功设法获得输出,但问题是这是作为单个列表输出。

我的编码知识有限,所以我不确定如何将其分成多个列表。

我在这里读到的其他答案很相似,但它们不同,我仍然不确定如何继续。

这是控制器文件中的代码:

$this->load->model('catalog/manufacturer');

$this->data['manufacturers'] = array();

$results = $this->model_catalog_manufacturer->getManufacturers();

foreach ($results as $result) {
    $this->data['manufacturers'][] = array(
        'name'            => $result['name'],
        'href'            => $this->url->link('product/manufacturer/info', 'manufacturer_id=' . $result['manufacturer_id'])
    );
}

这是模板文件中的代码:

<div class="brand">
  <ul>
    <?php foreach ($manufacturers as $manufacturer) { ?> 
    <li><a href="<?php echo $manufacturer['href']; ?>"><?php echo $manufacturer['name']; ?></a></li>
    <?php } ?>
  </ul>
</div>

有没有人能够建议应该添加哪些代码将HTML输出拆分为3个无序列表而不是1?

修改以进一步说明。

制造商按预期输出为单个无序列表。

像这样:

<ul>
  <li>Manufacturer 1</li>
  <li>Manufacturer 2</li>
  <li>Manufacturer 3</li>
  <li>Manufacturer 4</li>
  <li>Manufacturer 5</li>
  <li>Manufacturer 6</li>
  <li>Manufacturer 7</li>
  <li>Manufacturer 8</li>
  <li>Manufacturer 9</li>
</ul>

我希望输出:

<ul>
  <li>Manufacturer 1</li>
  <li>Manufacturer 2</li>
  <li>Manufacturer 3</li>
</ul>
<ul>
  <li>Manufacturer 4</li>
  <li>Manufacturer 5</li>
  <li>Manufacturer 6</li>
</ul>
<ul>
  <li>Manufacturer 7</li>
  <li>Manufacturer 8</li>
  <li>Manufacturer 9</li>
</ul>

总之,逻辑应该计算制造商的数量并将其除以预定数字(在这种情况下为3),然后输出三个具有相同数量子项的无序列表。

所以按照例子。有9家制造商产生了3个无序列表,每个列表中有3个孩子。

2 个答案:

答案 0 :(得分:0)

您可以使用array_chunkhttps://secure.php.net/manual/en/function.array-chunk.php

你在这里做的是,你正在制作数组的块,这意味着你将数组分成x个部分。

 <?php 
 foreach (array_chunk($manufacturers, 3, true) as $manufacturer) { ?>
    <ul>
    <?php foreach ($manufacturer as $value) { ?>
        <li><?php echo $value['name']; ?></li>
    <?php } ?>
    </ul>
 <?php } ?>

答案 1 :(得分:-1)

做print_r($ manufacturer)并看看你得到了什么