スライドカルーセルコンポーネントを構築する場合、多くの場合、画像やコンテンツのセットをページングする必要があります。たとえば、画像データのセットがあります。各カルーセルに3枚の写真を表示し、次の3枚の写真を表示するなどしたいと考えています。この種のデータスライシング操作は、 array_slice関数を介してPHPに簡単に実装できます。
Array_sliceは、元の配列のコンテンツを変更せずに配列からサブアレイを抽出するために使用されるPHPによって提供される配列処理機能です。
構文は次のとおりです。
array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array
$配列:操作を実行するための元の配列。
$ offset :アレイから抽出された開始位置(インデックス、0から始まる)。
$長:抽出される要素の数。
$ preserve_keys :元の配列のキー名を保持するかどうか(デフォルトはインデックスを再構築するためです)。
スライドショーに表示する準備ができている画像の次の配列があるとします。
$slides = [
'https://gitbox.net/images/slide1.jpg',
'https://gitbox.net/images/slide2.jpg',
'https://gitbox.net/images/slide3.jpg',
'https://gitbox.net/images/slide4.jpg',
'https://gitbox.net/images/slide5.jpg',
'https://gitbox.net/images/slide6.jpg',
'https://gitbox.net/images/slide7.jpg',
];
カルーセルの各グループが3つの画像を表示することを願っています。これは次のようにスライスできます。
$groupSize = 3;
$totalSlides = count($slides);
$totalGroups = ceil($totalSlides / $groupSize);
for ($i = 0; $i < $totalGroups; $i++) {
$offset = $i * $groupSize;
$slideGroup = array_slice($slides, $offset, $groupSize);
echo "第 " . ($i + 1) . " グループスライドショー:<br>";
foreach ($slideGroup as $slide) {
echo "<img src=\"$slide\" style=\"width:200px;height:auto;margin:5px;\">";
}
echo "<hr>";
}
CEIL($ totalSlides/$ groupsize)合計で必要なグループの数を計算します。
毎回、 array_sliceを介して元の配列から写真のセットが撮影されます。
ループに使用して、静的ページレンダリングまたはサーバー側のテンプレート出力に適したページング出力を実装します。
array_sliceの出力結果をJSONにカプセル化し、スワイパーやスリックなどのフロントエンドコンポーネントに引き渡して動的にロードできます。
// これがあると仮定します API 戻る
$offset = isset($_GET['page']) ? (int)$_GET['page'] * $groupSize : 0;
$currentGroup = array_slice($slides, $offset, $groupSize);
header('Content-Type: application/json');
echo json_encode($currentGroup);
このようにして、フロントエンドは、動的なカルーセル効果を達成するためにhttps://gitbox.net/api/slides.php?page=1を非同期的に要求することにより、対応するページのデータを取得できます。
Array_sliceは、データのページングとグループ化ディスプレイを処理するための強力なツールです。 Slide Carouselのニーズには、 Array_Sliceを使用して1次元のアレイを簡単に削減でき、フロントエンドコンポーネントでスムーズなユーザーエクスペリエンスを実現できます。写真に加えて、1次元配列(記事リストや製品リストなど)は、コードの再利用性と柔軟性を改善するために、同様の方法で処理できます。