Supposons que nous ayons un tableau contenant tous les articles dans une certaine catégorie. Le cœur de la pagination est d'intercepter le fragment de données correspondant à partir du tableau en fonction du numéro de page actuel et du nombre de pièces affichées sur chaque page.
Les paramètres de pagination comprennent généralement:
$ Page : numéro de page actuel
$ pagesize : nombre d'articles affichés par page
$ Offset : Offset, calculé comme ($ Page - 1) * $ PageSize
En utilisant Array_Slice , nous pouvons insérer des articles PageSize $ commençant par $ offset à partir du tableau d'articles pour réaliser une pagination.
Vous trouverez ci-dessous un exemple simple montrant comment implémenter la pagination de la classification des articles à l'aide d'Array_Slice .
<?php
// Simuler tous les tableaux d'articles dans les catégories
$articles = [
['id' => 1, 'title' => 'Article 1', 'category' => 'science et technologie'],
['id' => 2, 'title' => 'Article 2', 'category' => 'science et technologie'],
['id' => 3, 'title' => 'Article 3', 'category' => 'Vie'],
['id' => 4, 'title' => 'Article 4', 'category' => 'science et technologie'],
['id' => 5, 'title' => 'Article 5', 'category' => 'Vie'],
['id' => 6, 'title' => 'Article 6', 'category' => 'science et technologie'],
['id' => 7, 'title' => 'Article 7', 'category' => 'science et technologie'],
];
// Sélectionnez une catégorie
$category = 'science et technologie';
// Filtrer les articles actuels
$categoryArticles = array_filter($articles, function ($article) use ($category) {
return $article['category'] === $category;
});
// Reconstruire l'index,Facile à utiliser array_slice
$categoryArticles = array_values($categoryArticles);
// Numéro de page actuel,depuis URL Obtenir,Défaut 1 Page
$page = isset($_GET['page']) ? max(1, intval($_GET['page'])) : 1;
// 每Page显示文章数
$pageSize = 3;
// Calculer le décalage
$offset = ($page - 1) * $pageSize;
// 截取当前Page的文章
$currentPageArticles = array_slice($categoryArticles, $offset, $pageSize);
// 输出当前Page文章
foreach ($currentPageArticles as $article) {
echo "<h3>" . htmlspecialchars($article['title']) . "</h3>";
}
?>
La pagination doit non seulement afficher le contenu, mais également fournir aux utilisateurs une navigation pour changer de pages. Le nombre total de pages peut être calculé en fonction du nombre total d'articles et des liens paginés peuvent être générés dynamiquement.
<?php
$totalArticles = count($categoryArticles);
$totalPages = ceil($totalArticles / $pageSize);
for ($i = 1; $i <= $totalPages; $i++) {
if ($i == $page) {
echo "<strong>$i</strong> ";
} else {
echo "<a href=\"http://gitbox.net/yourcms?page=$i\">$i</a> ";
}
}
?>
Ici, nous utilisons http://gitbox.net comme nom de domaine, que vous pouvez remplacer en fonction de la situation réelle.
En utilisant la fonction Array_Slice de PHP, il est très pratique d'implémenter la pagination des données de tableau, qui convient à l'affichage des articles classifiés. La clé consiste à calculer correctement le décalage et à trancher le tableau après filtrage de classification. Couplé à une simple navigation de pagination, il peut répondre aux besoins de la plupart des CMS pour la pagination de la classification des articles.
Cette méthode ne s'appuie pas sur la pagination de la base de données et convient aux scénarios où les données sont petites ou les données ont été préchargées dans un tableau. Pour de grandes quantités de données, il est recommandé d'utiliser une requête de pagination de la base de données pour améliorer l'efficacité.