php - 将动态数量的项目划分为列

标签 php pagination

我有一个动态数量的项目,我需要将它们分成几列。假设我得到了这个:

array("one", "two", "three", "four", "five", "six", "seven", "eight")

我需要生成这个:

<ul>
  <li>one</li>
  <li>two</li>
  <li>three</li>
  <li>four</li>
</ul>
<ul>
  <li>five</li>
  <li>six</li>
  <li>seven</li>
  <li>eight</li>
</ul>

这里有一些规则:

  • 如果没有项目,我不想吐出任何东西
  • 如果有 16 件或少于 16 件,则 ID 为每 <ul> 4 件
  • 如果超过 16 项,我希望将其平均分布
  • 我必须按字母顺序重新排序项目。如果有 17 个项目,第 17 个项目将需要转到第一列,但所有内容都需要重新排序。

我目前拥有的:

function divide( $by, $array ) {
 14     $total = count( $array );
 15     $return = array();
 16     $index=0;
 17     $remainder = $total % $by !== 0;
 18     $perRow = $remainder ?
 19         $total / $by + 1:
 20         $total / $by
 21         ;
 22 
 23     for ( $j = 0; $j<$by; $j++ ) {
 24         //$return[] = array();
 25 
 26         if ( $index == 0 ) {
 27             $slice = array_slice( $array, 0, $perRow );
 28             $index = $perRow;
 29             $return[$j] = $slice;
 30         } else {
 31             $slice = array_slice( $array, $index, $perRow );
 32             $index = $index+$perRow;
 33             $return[$j] = $slice;
 34         }
 35     }
}

我输入一个数字,比如 divide( 4, $arrRef ),这个数字决定了列数,但我需要重构它来确定列数

最佳答案

我在我的 View 模板中使用了这段代码..

<?php
$col = 3;
$projects = array_chunk($projects, ceil(count($projects) / $col));

foreach ($projects as $i => $project_chunk)
{
    echo "<ul class='pcol{$i+1}'>";
    foreach ($project_chunk as $project)
        {
        echo "<li>{$project->name}</li>";
    };
    echo "</ul>";
}; ?>

关于php - 将动态数量的项目划分为列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4390699/

相关文章:

php - 关联数组(2 伙伴)

java - 分页逻辑怎么写?

函数中的 php 分页

laravel - 如何使用 Laravel API 资源对加载的关系进行分页

java - 扩展 JBoss Data Virt ws 转换器以处理分页源

ruby-on-rails - will_paginate ajax 淡入淡出

php - 我可以在 PHP 中混合使用 MySQL API 吗?

javascript - 如何使用另一个输入表单创建 android cordova 图像上传

javascript - 如何将输入数据数组传递给 Ajax 函数?

php - 使用 DB2 查询加入 mysql 数据进行插入