La pagination d'un tableau PHP peut être réalisée grâce aux méthodes suivantes : découpage du tableau (array_slice()) : divisez le tableau en fonction du décalage et de la longueur. Itérateur externe (LimitIterator) : utilisez un itérateur pour parcourir le tableau et définir la limite de décalage et de longueur. Fonction intégrée (array_chunk()) : divise un tableau en morceaux de taille spécifiée. Implémentation locale : les fonctions personnalisées implémentent l'algorithme de pagination, notamment en calculant le nombre total de pages, les décalages et en renvoyant le tableau de pagination.
La pagination est une exigence courante dans le développement Web, qui peut diviser de grandes quantités de données en morceaux plus petits, améliorant ainsi la vitesse de chargement des pages et l'expérience utilisateur. Il existe plusieurs façons d'implémenter la pagination de tableaux en PHP.
C'est la méthode la plus simple, utilisez la fonction array_slice()
de 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; }
PHP 7.1 及更高版本中引入了 array_chunk() 函数,它将数组分成指定大小的块:
// 分页后的数组 $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); }
假设我们有一个 $users
// 获取当前页 $currentPage = (isset($_GET['page'])) ? (int) $_GET['page'] : 1; // 分页后的用户数组 $paginatedUsers = paginate($users, $currentPage, 10);
LimitIterator< /code> Classe : <p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'><ul>
<?php foreach ($paginatedUsers as $user): ?>
<li><?php echo $user['name']; ?></li>
<?php endforeach; ?>
</ul></pre><div class="contentsignin">Copier après la connexion</div></div></p>Fonction intégrée 🎜🎜Introduite dans PHP 7.1 et supérieur, la fonction array_chunk() divise un tableau en morceaux d'une taille spécifiée : 🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'><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></pre><div class="contentsignin">Copier après la connexion</div></div>🎜Implémentation native🎜🎜peut également être utilisée Fonction pour implémenter votre propre algorithme de pagination : 🎜rrreee🎜Cas pratique🎜🎜Supposons que nous ayons un tableau <code>$users
contenant 100 utilisateurs, et que nous devions maintenant afficher 10 éléments de données sur chaque page : 🎜rrreee🎜Ensuite, nous peut afficher les données utilisateur paginées sur la page : 🎜rrreee🎜Le contrôle de pagination peut être implémenté selon les besoins, par exemple : 🎜rrreeeCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!