在 PHP 開發中,經常需要將一維陣列按固定長度分組為二維陣列。本文介紹一種簡潔高效的方法,利用 array_slice() 函數實現將一維陣列每 3 個元素分割為一個子陣列,組成二維結構。
<?php
$aaa = array('aa','bb','cc','dd','ee','ff','gg','hh','ii');
for($i=0; $i<3; $i++) {
$bbb[] = array_slice($aaa, $i * 3, 3);
}
print_r($bbb);
?>
Array
(
[0] => Array
(
[0] => aa
[1] => bb
[2] => cc
)
[1] => Array
(
[0] => dd
[1] => ee
[2] => ff
)
[2] => Array
(
[0] => gg
[1] => hh
[2] => ii
)
)
核心邏輯在於 $bbb[] = array_slice($aaa, $i * 3, 3); 這行代碼:
$i * 3 計算每組的起始偏移量(0, 3, 6)3 指定每組提取的元素數量為了提高復用性,可封裝為通用函數:
<?php
function chunkArray($array, $size) {
$result = [];
$length = count($array);
for ($i = 0; $i < $length; $i += $size) {
$result[] = array_slice($array, $i, $size);
}
return $result;
}
// 使用示例
$data = range('a', 'i'); // ['a','b','c','d','e','f','g','h','i']
$grouped = chunkArray($data, 3);
print_r($grouped);
?>
這種方法同樣適用於任意長度的分組需求,代碼更具靈活性與可維護性。
更多 PHP 陣列操作技巧,請參考:《PHP 陣列(Array)操作技巧大全》、《PHP 排序算法總結》、《PHP 常用遍歷算法與技巧總結》等專題。