0

好的,对不起,如果这是一个愚蠢的问题,我在谷歌上花了很多时间,但我找不到任何东西,可能是因为我不知道正确的关键字。

我需要创建一个这样的列表:

一些标题:

项目 1 项目 6

第 2 项 第 7 项

第 3 项 第 8 项

第 4 项

第 5 项

我需要循环一个数据数组,然后在达到限制时将其设为 2 列,因此这与模板的结果相同。

我很想展示一个详细的图像,但我没有足够的声誉来做这件事。所以希望你能理解。

如果您知道解决方案,请帮助我。

非常感谢您。

4

2 回答 2

0

array_chunk()&可能array_map()(取决于您真正想要的方式)可以成为您的朋友:

php > $array = range(1,8);
php > $chunked = array_chunk($array,5);
php > var_dump($chunked);
array(2) {
  [0] =>
  array(5) {
    [0] =>
    int(1)
    [1] =>
    int(2)
    [2] =>
    int(3)
    [3] =>
    int(4)
    [4] =>
    int(5)
  }
  [1] =>
  array(3) {
    [0] =>
    int(6)
    [1] =>
    int(7)
    [2] =>
    int(8)
  }
}
php > array_unshift($chunked,NULL);
php > var_dump(call_user_func_array('array_map',$chunked));
array(5) {
  [0] =>
  array(2) {
    [0] =>
    int(1)
    [1] =>
    int(6)
  }
  [1] =>
  array(2) {
    [0] =>
    int(2)
    [1] =>
    int(7)
  }
  [2] =>
  array(2) {
    [0] =>
    int(3)
    [1] =>
    int(8)
  }
  [3] =>
  array(2) {
    [0] =>
    int(4)
    [1] =>
    NULL
  }
  [4] =>
  array(2) {
    [0] =>
    int(5)
    [1] =>
    NULL
  }
}
于 2013-10-12T14:26:22.883 回答
0

您需要将您的项目放在一个具有从 开始的连续数字索引的数组中0,如果您还没有这个,您可以使用array_values($array).

// assuming $array is set with your input array
$limit = 5; // set the row limit here
$count = count($array);

for ($i = 0; $i < $limit; $i++)
{
    for ($e = 0; $e < $count; $e += $limit)
    {
        if (isset($array[$e]))
            echo $array[$e] . "\t";
    }
    echo "\n";
}
于 2013-10-12T14:27:43.150 回答