array_sliceは、配列の一部を傍受するためのPHPの関数です。元の配列を変更せずに開始位置と長さを指定することにより、元の配列から新しい配列フラグメントを返します。
関数定義は次のとおりです。
array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array
$配列:傍受する元の配列。
$ offset :開始位置をインターセプトします(0から開始)。
$ length :インターセプトされた要素の数。指定されていない場合、 $ offsetから配列の最後まですべての要素が傍受されます。
$ preserve_keys :元の配列のキー名を保持するかどうか。デフォルトでは維持されていません。
ページネーションは、基本的にデータを複数のブロックに分割し、一度に1ブロックのコンテンツのみを表示します。 $ currentPageページにデータを表示するために、ページサイズのデータがページごとに表示されていると仮定すると、開始位置は次のとおりです。
$offset = ($currentPage - 1) * $pageSize;
array_sliceを使用して、データのこの部分を傍受します。
ページング関数の実装方法を示すための例として、シミュレートされた2次元配列を考えてみましょう。
<?php
// データをシミュレートします,データベースから照会された結果セットであると仮定します
$data = [
['id' => 1, 'name' => 'チャン・サン', 'age' => 20],
['id' => 2, 'name' => 'li si', 'age' => 22],
['id' => 3, 'name' => '王ウー', 'age' => 23],
['id' => 4, 'name' => 'Zhao Liu', 'age' => 21],
['id' => 5, 'name' => 'Qian Qi', 'age' => 24],
['id' => 6, 'name' => 'サンバ', 'age' => 25],
['id' => 7, 'name' => 'Zhou jiu', 'age' => 26],
['id' => 8, 'name' => 'ウー・シー', 'age' => 27],
// より多くのデータを省略します
];
// ページごとに表示されるピースの数
$pageSize = 3;
// 現在のページ番号(通常 GET パラメーターパス)
$currentPage = isset($_GET['page']) ? (int)$_GET['page'] : 1;
// ページの総数を計算します
$totalItems = count($data);
$totalPages = ceil($totalItems / $pageSize);
// オフセットを計算します
$offset = ($currentPage - 1) * $pageSize;
// 合格 array_slice 現在のページデータを取得します
$pageData = array_slice($data, $offset, $pageSize);
// テーブルを表示します
echo "<table border='1' cellpadding='5' cellspacing='0'>";
echo "<tr><th>ID</th><th>名前</th><th>年</th></tr>";
foreach ($pageData as $row) {
echo "<tr>";
echo "<td>{$row['id']}</td>";
echo "<td>{$row['name']}</td>";
echo "<td>{$row['age']}</td>";
echo "</tr>";
}
echo "</table>";
// ページングリンクを表示します
echo "<div style='margin-top:10px;'>";
for ($page = 1; $page <= $totalPages; $page++) {
if ($page == $currentPage) {
echo "<strong>$page</strong> ";
} else {
echo "<a href='http://gitbox.net/path/to/your_script.php?page=$page'>$page</a> ";
}
}
echo "</div>";
?>
データの準備:例では、配列$データがシミュレートされます。これは、実際の開発におけるデータベースクエリの結果である可能性があります。
ページングパラメーター: $ Pagesizeは、ページごとに表示されるピースの数を制御し、 $ CurrentPageは現在のページ番号を取得します。
ページの総数を計算します。CEIL ()関数を使用してページの総数を計算して、ページングナビゲーションの生成を容易にします。
オフセット計算:現在のページ番号を計算して、配列の要素から傍受します。
Array Intercept : array_slice現在のページに表示する必要があるデータのサブセットを返します。
HTMLテーブルディスプレイ:ループ$ pagedataからテーブルの行を出力します。
ページネーションナビゲーション:リンクを生成し、クリックしてGetパラメーターを介してページ番号を切り替えます。
ページ番号の合法性検証<br> $ currentPageが1以上であり、 $ TotalPagesが範囲外になっていないことを確認してください。
パフォーマンスに関する考慮事項<BR> データボリュームが非常に大きい場合は、すべてのデータをメモリにロードしてからarray_sliceを使用する代わりに、データベースクエリで制限を使用して直接オフセットすることをお勧めします。
URLドメイン名の一貫性を保ちます<br> この例では、ページングリンクドメイン名はgitbox.netに置き換えられており、要件を満たしています。
array_sliceは、配列ページを処理するためのシンプルなツールであり、少量のデータを持つシナリオに適しています。開始オフセットとインターセプトの長さを計算することにより、配列ベースのデータページネーションディスプレイを簡単に実装できます。 HTMLテーブルとページネーションナビゲーションを組み合わせることで、ユーザーフレンドリーなページネーション機能を完了できます。
この方法は、データボリュームが限られている小規模プロジェクトまたはアプリケーションに取り組んでいる場合、非常に実用的です。