PHP将数组拆分为3个独立的UL和列

时间:2017-02-01 01:13:55

标签: php arrays

我无法弄清楚我需要实现的逻辑

在网页上,我有一组来自一组结果的动态生成的数组。数组计数可以是任何数字。例如,在一个页面上可能有11个项目,而在另一个页面上。

我需要的是将其分为3列和3个UL。

假设数组包含23个项目,所需的输出将是:

    <div class="column">
        <ul>
            <li>Item 1</li>
            <li>Item 2</li>
            <li>Item 3</li>
            <li>Item 4</li>
            <li>Item 5</li>
            <li>Item 6</li>
            <li>Item 7</li>
            <li>Item 8</li>
        </ul>
    </div>
    <div class="column">
        <ul>
            <li>Item 9</li>
            <li>Item 10</li>
            <li>Item 11</li>
            <li>Item 12</li>
            <li>Item 13</li>
            <li>Item 14</li>
            <li>Item 15</li>
            <li>Item 16</li>
        </ul>
    </div>
    <div class="column">
        <ul>
            <li>Item 17</li>
            <li>Item 18</li>
            <li>Item 19</li>
            <li>Item 20</li>
            <li>Item 21</li>
            <li>Item 22</li>
            <li>Item 23</li>
        </ul>
    </div>

物品按顺序排列,并尽可能平分。如果有一个奇数,那就没问题,因为最后一列会少一些,如上所示。

我尝试过使用array_chunk()

$ar_list = array("<li>Item 1</li>","<li>Item 2</li>","<li>Item 3</li>","<li>Item 4</li>","<li>Item 5</li>");
$lists = array_chunk($ar_list, 3);



foreach ($lists as $list) {
  echo '<ul>';
  echo $list;
  echo '</ul>';
}

然而,这会返回:

  

阵列

     

阵列

     

阵列

     

阵列

     

阵列

有人可以帮助我获取:$ ar_list的内容,以便输出所需的效果吗?

提前谢谢

2 个答案:

答案 0 :(得分:3)

$size函数的array_chunk参数实际上是每个块中的项目数,不是块的数量。为了获得三个,你应该首先通过将数组的大小除以3然后在array_chunk函数中使用该计数(四舍五入)来计算每个块中的项目数。当您遍历数组时,您需要一个嵌套循环来输出每列的每个列表项。

像这样:

<?php

$ar_list = array("<li>Item 1</li>","<li>Item 2</li>","<li>Item 3</li>","<li>Item 4</li>","<li>Item 5</li>");
$rows = ceil(count($ar_list) / 3);
$lists  = array_chunk($ar_list, $rows);

foreach ( $lists as $column) {
    echo '<ul>';
    foreach ($column as $item) {
        echo $item;
    }
    echo '</ul>';
}

答案 1 :(得分:1)

@JamesG 你得到一个“数组”的输出,因为你试图回应一个“数组”

在你的情况下你应该使用print_r(Array)来显示数组

中的内容

但是如果你想要显示数组的值,代码将是这样的
*假设您的$ ar_list

中有23个项目
$ar_list = array("<li>Item 1</li>","<li>Item 2</li>","<li>Item 3</li>","<li>Item 4</li>","<li>Item 5</li>","<li>Item 6</li>","<li>Item 7</li>","<li>Item 8</li>","<li>Item 9</li>","<li>Item 10</li>","<li>Item 11</li>","<li>Item 12</li>","<li>Item 13</li>","<li>Item 14</li>","<li>Item 15</li>","<li>Item 16</li>","<li>Item 17</li>","<li>Item 18</li>","<li>Item 19</li>","<li>Item 20</li>","<li>Item 21</li>","<li>Item 22</li>","<li>Item 23</li>");
$lists = array_chunk($ar_list, 3);

foreach ($lists as $list) {
    echo '<ul>';
        foreach ($list as $value) {
            echo $value;
        }
    echo '</ul>';
}