如果你想输出这么一个列表你会怎么做呢?

数据:

1
$cars=array("Volvo","BMW","Toyota","Honda","Mercedes","Opel");

最终结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
<section class="list">
<div>Volvo</div>
<div>BMW</div>
<br>
<div>Toyota</div>
<div>Honda</div>
<br>
<div>Mercedes</div>
<div>Opel</div>
<br>
...
</section>

以前我一直这样做:

1
2
3
4
5
6
7
8
9
$cars=array("Volvo","BMW","Toyota","Honda","Mercedes","Opel");
$html = '<section class="list">';
foreach($cars as $index=>$car){
$the_br = ($index + 1) % 2 == 0 ? '<br>' : '';
$html .= '<div>' . $car . '</div>' . $the_br;
}
$html .= '</section>';
echo $html;

一直在纠纷里面那个判断,使用array_chunk()函数就不在费脑细胞了。array_chunk()版本:

1
2
3
4
5
6
7
8
9
10
11
$cars=array("Volvo","BMW","Toyota","Honda","Mercedes","Opel");
$html = '<section class="list">';
foreach(array_chunk($cars, 2) as $split_car){
foreach($split_car as $car){
$html .= '<div>'. $car . '</div>';
}
$html .= '<br>';
}
$html .= '</section>';
echo $html;


array_chunk函数介绍

array_chunk() 函数把数组分割为新的数组块。语法:

1
array_chunk(array, size, preserve_key);

其中每个数组的单元数目由 size 参数决定。最后一个数组的单元数目可能会少几个。

可选参数 preserve_key 是一个布尔值,它指定新数组的元素是否有和原数组相同的键(用于关联数组),还是从 0 开始的新数字键(用于索引数组)。默认是分配新的键。

例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$cars=array("Volvo","BMW","Toyota","Honda","Mercedes","Opel");
print_r(array_chunk($cars,2));
/*
(
[0] => Array
(
[0] => Volvo
[1] => BMW
)
[1] => Array
(
[0] => Toyota
[1] => Honda
)
[2] => Array
(
[0] => Mercedes
[1] => Opel
)
)*/
?>