Maison  >  Article  >  développement back-end  >  Quelles sont les méthodes d’implémentation de la pagination des tableaux PHP ?

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

WBOY
WBOYoriginal
2024-05-02 10:12:021106parcourir

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 d’implé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);

外部迭代器

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);

Itérateur externe

La bibliothèque de classes standard de PHP fournit une méthode pour parcourir les tableaux LimitIterator Classe : <p><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></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 : 🎜<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>🎜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!

Déclaration:
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