PHP 配列のページングは、次のメソッドを通じて実現できます: 配列のスライス (array_slice()): オフセットと長さに応じて配列を分割します。外部反復子 (LimitIterator): 反復子を使用して配列を走査し、オフセットと長さの制限を設定します。組み込み関数 (array_chunk()): 配列を指定されたサイズのチャンクに分割します。ローカル実装: カスタム関数は、総ページ数、オフセットの計算、ページング配列の返しなどのページング アルゴリズムを実装します。
ページングは、Web 開発における一般的な要件です。これにより、大量のデータを小さなチャンクに分割できます。ページの読み込み速度とユーザー エクスペリエンスが向上します。 PHP で配列のページネーションを実装するには、いくつかの方法があります。
これは、PHP の array_slice()
関数を使用する最も簡単な方法です。
// 获取当前页 $currentPage = (isset($_GET['page'])) ? (int) $_GET['page'] : 1; // 每页显示的记录数 $perPage = 10; // 计算偏移量 $offset = ($currentPage - 1) * $perPage; // 分页后的数组 $paginatedArray = array_slice($array, $offset, $perPage);
標準PHP のクラス ライブラリは、配列を走査するための LimitIterator
クラスを提供します。
use IteratorIterator; use LimitIterator; // 创建外部迭代器 $limitIterator = new LimitIterator(new ArrayIterator($array), $offset, $perPage); // 分页后的数组 $paginatedArray = []; foreach ($limitIterator as $item) { $paginatedArray[] = $item; }
array_chunk() は、PHP 7.1 以降のバージョンで導入されました ) 関数。配列を指定されたサイズのチャンクに分割します:
// 分页后的数组 $paginatedArray = array_chunk($array, $perPage);
この関数を使用して独自のページング アルゴリズムを実装することもできます:
function paginate(array $array, int $currentPage, int $perPage): array { $totalPages = ceil(count($array) / $perPage); if ($currentPage < 1 || $currentPage > $totalPages) { return []; } $offset = ($currentPage - 1) * $perPage; return array_slice($array, $offset, $perPage); }
100 人のユーザーを含む $users
の配列があり、各ページに 10 個のデータを表示する必要があるとします。
// 获取当前页 $currentPage = (isset($_GET['page'])) ? (int) $_GET['page'] : 1; // 分页后的用户数组 $paginatedUsers = paginate($users, $currentPage, 10);
次に、ページネーションを表示できます。ページ上のユーザー データ:
<ul> <?php foreach ($paginatedUsers as $user): ?> <li><?php echo $user['name']; ?></li> <?php endforeach; ?> </ul>
ページング コントロールは必要に応じて実装できます。例:
<nav aria-label="Pagination"> <ul class="pagination"> <?php if ($currentPage > 1): ?> <li class="page-item"> <a class="page-link" href="<?php echo "?page=" . ($currentPage - 1); ?>">Previous</a> </li> <?php endif; ?> <?php for ($i = 1; $i <= $totalPages; $i++): ?> <li class="page-item <?php echo ($currentPage == $i) ? 'active' : ''; ?>"> <a class="page-link" href="<?php echo "?page=" . $i; ?>"><?php echo $i; ?></a> </li> <?php endfor; ?> <?php if ($currentPage < $totalPages): ?> <li class="page-item"> <a class="page-link" href="<?php echo "?page=" . ($currentPage + 1); ?>">Next</a> </li> <?php endif; ?> </ul> </nav>
以上がPHP配列ページングの実装方法にはどのようなものがありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。