📜  PHP | array_chunk()函数(1)

📅  最后修改于: 2023-12-03 14:45:13.486000             🧑  作者: Mango

PHP | array_chunk()函数

在开发中,经常会需要将一个数组按照一定的规则进行分组,这时候就需要使用到PHP提供的array_chunk()函数。这个函数可以将一个数组按照指定的大小分割为多个数组并返回分割后的数组集合。

语法
array_chunk(array $array, int $size, bool $preserve_keys = false): array
  • $array: 必选,要进行分割的数组。
  • $size: 必选,每个子数组包含的元素个数。
  • $preserve_keys: 可选,如果设置为true,则保留原数组的键名不变,默认为false
返回值

array_chunk()函数返回一个二维数组,其中包含了按大小分割后的所有子数组。

示例
<?php
// 定义一个要进行分割的数组
$array = array('a', 'b', 'c', 'd', 'e', 'f', 'g', 'h');

// 调用array_chunk()函数进行分割
$result = array_chunk($array, 3);

print_r($result);
?>

输出:

Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
            [2] => c
        )

    [1] => Array
        (
            [0] => d
            [1] => e
            [2] => f
        )

    [2] => Array
        (
            [0] => g
            [1] => h
        )

)

上面的代码将$array数组按每组包含3个元素的规则进行分割,并返回了一个包含三个子数组的二维数组。

常见应用
将结果分页展示

使用array_chunk()函数可以轻松地将一个结果分页展示。比如,将一些文章按每一页显示5篇来分页展示。

<?php
// 从数据库中获取文章列表
$articles = get_articles();

// 每一页显示的文章数
$page_size = 5;

// 获取当前页数
$page = ($_GET['page']) ?? 1;

// 根据当前页数,计算需要从哪里开始取文章
$start = ($page - 1) * $page_size;

// 将所有文章按照指定大小分割为多个二维数组
$pages = array_chunk($articles, $page_size, true);

// 取出当前页要显示的文章
$articles_to_show = $pages[$page - 1];
?>

上面的代码将所有文章按照每页5篇的规则进行分割,然后根据当前页数取出需要显示的文章。

批量处理数据

如果要对一些数据进行批量操作,可以使用array_chunk()函数将它们按照一定的规则进行分割,然后逐个对每个子数组进行处理。

<?php
// 从数据库中获取所有用户的ID
$user_ids = get_user_ids();

// 将所有用户ID按照每次处理10个的规则分割
$chunks = array_chunk($user_ids, 10);

// 逐个处理每个子数组里的用户ID
foreach ($chunks as $chunk) {
    // 从数据库中根据用户ID获取相应的用户信息
    $users = get_users_by_ids($chunk);

    // 对每个用户进行操作
    foreach ($users as $user) {
        // ...
    }
}
?>

上面的代码将所有用户ID按照每次处理10个的规则分割,然后逐个对每个子数组里的用户ID进行处理。这样做可以避免一次性处理过多的数据,从而提高代码的性能。