我无法弄清楚我需要实现的逻辑
在网页上,我有一组来自一组结果的动态生成的数组。数组计数可以是任何数字。例如,在一个页面上可能有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的内容,以便输出所需的效果吗?
提前谢谢
答案 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
$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>';
}