当前位置: 首页> 最新文章列表> 如何通过 array_chunk 对二维数组进行分页处理

如何通过 array_chunk 对二维数组进行分页处理

M66 2025-04-25

在实际开发中,我们经常需要将一个大的二维数组分页显示,比如在一个列表展示页面上。PHP 提供了一个非常实用的函数 array_chunk(),它可以将一个大的数组拆分成多个小数组。在这个教程中,我们将学习如何使用 array_chunk() 函数来分页显示一个大的二维数组。

示例场景

假设我们有一个大的二维数组,它包含了很多用户的资料信息。我们想要将这些信息分页显示出来,每一页展示 5 条记录。我们将使用 array_chunk() 来实现这一功能。

步骤:

  1. 准备一个大的二维数组

    假设我们有一个包含 20 条记录的二维数组,每条记录是一个用户信息:

    <?php
    $users = [
        ['id' => 1, 'name' => 'Alice', 'email' => 'alice@m66.net'],
        ['id' => 2, 'name' => 'Bob', 'email' => 'bob@m66.net'],
        ['id' => 3, 'name' => 'Charlie', 'email' => 'charlie@m66.net'],
        ['id' => 4, 'name' => 'David', 'email' => 'david@m66.net'],
        ['id' => 5, 'name' => 'Eve', 'email' => 'eve@m66.net'],
        ['id' => 6, 'name' => 'Frank', 'email' => 'frank@m66.net'],
        ['id' => 7, 'name' => 'Grace', 'email' => 'grace@m66.net'],
        ['id' => 8, 'name' => 'Hannah', 'email' => 'hannah@m66.net'],
        ['id' => 9, 'name' => 'Ivy', 'email' => 'ivy@m66.net'],
        ['id' => 10, 'name' => 'Jack', 'email' => 'jack@m66.net'],
        ['id' => 11, 'name' => 'Kevin', 'email' => 'kevin@m66.net'],
        ['id' => 12, 'name' => 'Lily', 'email' => 'lily@m66.net'],
        ['id' => 13, 'name' => 'Mason', 'email' => 'mason@m66.net'],
        ['id' => 14, 'name' => 'Nina', 'email' => 'nina@m66.net'],
        ['id' => 15, 'name' => 'Oscar', 'email' => 'oscar@m66.net'],
        ['id' => 16, 'name' => 'Paul', 'email' => 'paul@m66.net'],
        ['id' => 17, 'name' => 'Quincy', 'email' => 'quincy@m66.net'],
        ['id' => 18, 'name' => 'Rachel', 'email' => 'rachel@m66.net'],
        ['id' => 19, 'name' => 'Sam', 'email' => 'sam@m66.net'],
        ['id' => 20, 'name' => 'Tina', 'email' => 'tina@m66.net']
    ];
    ?>
    
  2. 使用 array_chunk() 分页

    array_chunk() 函数将数组分割成指定大小的多个子数组。我们可以将每一页的记录限制为 5 条,分页展示:

    <?php
    // 每页显示 5 条记录
    $page_size = 5;
    
    // 使用 array_chunk() 将大数组分割成多个小数组
    $paged_users = array_chunk($users, $page_size);
    
    // 输出分页后的用户信息
    echo '<pre>';
    print_r($paged_users);
    echo '</pre>';
    ?>
    

    这样,$paged_users 就是一个二维数组,每个子数组包含 5 个用户记录。例如,第一页显示的 5 条记录,第二页显示接下来的 5 条记录,依此类推。

  3. 分页显示

    假设我们需要在网页上显示每一页的用户信息。我们可以通过计算当前页数和总页数,来动态生成分页链接。

    <?php
    $total_pages = count($paged_users);
    $current_page = 1;  // 假设当前是第一页
    
    // 显示当前页的用户信息
    echo '当前页面:' . $current_page . '<br>';
    foreach ($paged_users[$current_page - 1] as $user) {
        echo 'ID: ' . $user['id'] . ',姓名: ' . $user['name'] . ',邮箱: ' . $user['email'] . '<br>';
    }
    
    // 显示分页链接
    echo '<br>分页链接:<br>';
    for ($i = 1; $i <= $total_pages; $i++) {
        echo '<a href="page.php?page=' . $i . '">第' . $i . '页</a> ';
    }
    ?>
    

    这里我们假设通过查询字符串(如 page.php?page=1)来确定当前页数。通过动态生成链接,用户可以点击不同的页面,查看相应的数据。