Quelles sont les méthodes d'implémentation de la pagination des tableaux PHP ?

WBOY
Libérer: 2024-05-02 10:12:02
original
1104 Les gens l'ont consulté

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.

Quelles sont les méthodes dimplémentation de la pagination des tableaux PHP ?

Comment implémenter la pagination de tableaux en PHP

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.

Array Slice

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);
Copier après la connexion

外部迭代器

PHP 中的标准类库提供了一个用于遍历数组的 LimitIterator 类:

use IteratorIterator;
use LimitIterator;

// 创建外部迭代器
$limitIterator = new LimitIterator(new ArrayIterator($array), $offset, $perPage);

// 分页后的数组
$paginatedArray = [];
foreach ($limitIterator as $item) {
    $paginatedArray[] = $item;
}
Copier après la connexion

内置函数

PHP 7.1 及更高版本中引入了 array_chunk() 函数,它将数组分成指定大小的块:

// 分页后的数组
$paginatedArray = array_chunk($array, $perPage);
Copier après la connexion

本地实现

也可以使用函数来实现自己的分页算法:

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);
}
Copier après la connexion

实战案例

假设我们有一个 $users

// 获取当前页
$currentPage = (isset($_GET['page'])) ? (int) $_GET['page'] : 1;

// 分页后的用户数组
$paginatedUsers = paginate($users, $currentPage, 10);
Copier après la connexion

Itérateur externe

La bibliothèque de classes standard de PHP fournit une méthode pour parcourir les tableaux LimitIterator< /code> Classe : <p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'>&lt;ul&gt; &lt;?php foreach ($paginatedUsers as $user): ?&gt; &lt;li&gt;&lt;?php echo $user['name']; ?&gt;&lt;/li&gt; &lt;?php endforeach; ?&gt; &lt;/ul&gt;</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;'>&lt;nav aria-label=&quot;Pagination&quot;&gt; &lt;ul class=&quot;pagination&quot;&gt; &lt;?php if ($currentPage &gt; 1): ?&gt; &lt;li class=&quot;page-item&quot;&gt; &lt;a class=&quot;page-link&quot; href=&quot;&lt;?php echo &quot;?page=&quot; . ($currentPage - 1); ?&gt;&quot;&gt;Previous&lt;/a&gt; &lt;/li&gt; &lt;?php endif; ?&gt; &lt;?php for ($i = 1; $i &lt;= $totalPages; $i++): ?&gt; &lt;li class=&quot;page-item &lt;?php echo ($currentPage == $i) ? 'active' : ''; ?&gt;&quot;&gt; &lt;a class=&quot;page-link&quot; href=&quot;&lt;?php echo &quot;?page=&quot; . $i; ?&gt;&quot;&gt;&lt;?php echo $i; ?&gt;&lt;/a&gt; &lt;/li&gt; &lt;?php endfor; ?&gt; &lt;?php if ($currentPage &lt; $totalPages): ?&gt; &lt;li class=&quot;page-item&quot;&gt; &lt;a class=&quot;page-link&quot; href=&quot;&lt;?php echo &quot;?page=&quot; . ($currentPage + 1); ?&gt;&quot;&gt;Next&lt;/a&gt; &lt;/li&gt; &lt;?php endif; ?&gt; &lt;/ul&gt; &lt;/nav&gt;</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 : 🎜rrreee

Ce 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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!