ZetCode

PHP array_chunk 函数

最后修改于 2025 年 3 月 13 日

PHP 的 array_chunk 函数将一个数组分割成更小的数组块。它对于分批处理大数组非常有用。

基本定义

array_chunk 函数将一个数组按指定的大小分割成多个块。它返回一个包含这些块的新多维数组。

语法: array_chunk(array $array, int $size, bool $preserve_keys = false): array$size 决定了块的大小。$preserve_keys 用于保留原始键名。

基本的 array_chunk 示例

此示例演示了如何将一个简单数组分割成每块包含 2 个元素的数组。

basic_array_chunk.php
<?php

$numbers = [1, 2, 3, 4, 5, 6, 7, 8];
$chunks = array_chunk($numbers, 2);

print_r($chunks);

输出显示原始数组被分成 4 个块,每个块包含 2 个元素。每个块内的键都从 0 开始重新索引。

保留原始键

此示例展示了如何在块中维护原始数组的键名。

preserve_keys.php
<?php

$assocArray = [
    'a' => 1,
    'b' => 2,
    'c' => 3,
    'd' => 4
];
$chunks = array_chunk($assocArray, 2, true);

print_r($chunks);

preserve_keys 设置为 true 时,输出会保留 'a', 'b', 'c', 'd' 这些键名在各自的块中,而不是重新索引。

不均匀的块划分

当数组长度不能被块大小整除时,最后一个块会比较小。

uneven_chunks.php
<?php

$colors = ['red', 'green', 'blue', 'yellow', 'black'];
$chunks = array_chunk($colors, 2);

print_r($chunks);

这会创建 3 个块:前两个块各有 2 种颜色,最后一个块只有 1 种颜色。该函数会自动处理不均匀的分割。

处理大数组

分块处理对于分批处理大数组以管理内存非常有用。

batch_processing.php
<?php

$bigArray = range(1, 1000);
$batchSize = 100;

foreach (array_chunk($bigArray, $batchSize) as $chunk) {
    // Process 100 elements at a time
    processBatch($chunk);
}

function processBatch(array $batch): void {
    echo "Processing " . count($batch) . " elements\n";
}

该示例以每批 100 个元素处理 1000 个元素,通过不一次性加载所有元素来减少内存使用。每次迭代处理一个块。

多维数组分块

分块处理也适用于多维数组,它会在顶层进行分割。

multidimensional.php
<?php

$matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
    [10, 11, 12]
];
$chunks = array_chunk($matrix, 2);

print_r($chunks);

这个 4x3 的矩阵被分成两个块,每个块包含 2 个子数组。内部的子数组在其各自的块中保持不变。

最佳实践

来源

PHP array_chunk 文档

本教程通过实际示例介绍了 PHP 的 array_chunk 函数,展示了它在数组处理场景中的用法。

作者

我叫 Jan Bodnar,是一位充满激情的程序员,拥有丰富的编程经验。我自 2007 年开始撰写编程文章。迄今为止,我已撰写了 1,400 多篇文章和 8 本电子书。我在教授编程方面拥有超过十年的经验。

列出 所有 PHP 数组函数