Array_Slice는 배열의 일부를 가로 채는 PHP의 함수입니다. 원래 배열을 변경하지 않고 시작 위치와 길이를 지정하여 원래 배열에서 새 배열 조각을 반환합니다.
함수 정의는 다음과 같습니다.
array_slice(array $array, int $offset, ?int $length = null, bool $preserve_keys = false): array
$ 배열 : 원래 배열을 가로 채 웁니다.
$ 오프셋 : 시작 위치를 가로 채십시오 (0부터 시작).
$ 길이 : 차단 된 요소의 수. 지정되지 않은 경우 배열의 $ 오프셋 에서 배열 끝까지의 모든 요소가 가로 채 웁니다.
$ preserve_keys : 원래 배열의 키 이름을 유지할지 여부. 기본적으로 유지되지 않습니다.
Pagination은 본질적으로 데이터를 여러 블록으로 나누어 한 번에 하나의 컨텐츠 블록 만 표시합니다. $ pagesize 데이터가 페이지 당 표시되어 $ 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 테이블 디스플레이 : LOOP $ PAGEDATA 에서 출력 테이블 행입니다.
Pagination Navigation : 링크를 생성 한 다음 클릭하여 Get 매개 변수를 통해 페이지 번호를 전환합니다.
페이지 번호 합법성 검증 <br> $ CurrentPage가 1보다 1보다 크지 않고 총 범위를 벗어나지 않도록하십시오.
성능 고려 사항 <br> 데이터 볼륨이 매우 크면 데이터베이스 쿼리에서 한계 및 오프셋을 사용하여 모든 데이터를 메모리에로드 한 다음 Array_Slice를 사용하는 대신 페이징을 구현하는 것이 좋습니다.
URL 도메인 이름을 일관성있게 유지하십시오 <br> 이 예에서는 페이징 링크 도메인 이름이 요구 사항을 충족하는 gitbox.net 으로 대체되었습니다.
Array_Slice 는 배열 페이징을 처리하기위한 간단한 도구이며 소량의 데이터가있는 시나리오에 적합합니다. 시작 오프셋 및 인터셉트 길이를 계산하면 배열 기반 데이터 페이지 매김 디스플레이를 쉽게 구현할 수 있습니다. HTML 테이블과 Pagination Navigation을 결합하면 사용자 친화적 인 페이지 매김 기능을 완료 할 수 있습니다.
이 방법은 데이터 볼륨이 제한된 소규모 프로젝트 또는 응용 프로그램을 작업하는 경우 매우 실용적입니다.