実際の開発では、リスト表示ページなどの大きな2次元アレイページングを表示する必要があることがよくあります。 PHPは非常に実用的な関数Array_Chunk()を提供します。これにより、大きな配列を複数の小さなアレイに分割できます。このチュートリアルでは、 Array_Chunk()関数を使用して大きな2D配列をページングする方法を学びます。
多くのユーザープロファイル情報を含む大きな2次元配列があるとします。この情報ページを表示し、各ページに5つのレコードが表示されます。 array_chunk()を使用してこの関数を実装します。
大きな2Dアレイを準備します
20のレコードの2次元配列があり、各レコードがユーザー情報であるとします。
<?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']
];
?>
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は2次元配列であり、各サブアレイには5つのユーザーレコードが含まれています。たとえば、最初のページには5つのレコードが表示されます。2番目のページには、次の5つのレコードなどが表示されます。
ページネーションディスプレイ
Webページに各ページのユーザー情報を表示する必要があるとします。現在のページ数とページの総数を計算することにより、ページングリンクを動的に生成できます。
<?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など)を照会することによって決定されると想定しています。リンクを動的に生成することにより、ユーザーは異なるページをクリックして対応するデータを表示できます。