PHP 배열 페이징은 다음 방법을 통해 달성할 수 있습니다: 배열 슬라이싱(array_slice()): 오프셋과 길이에 따라 배열을 분할합니다. 외부 반복자(LimitIterator): 반복자를 사용하여 배열을 순회하고 오프셋 및 길이 제한을 설정합니다. 내장 함수(array_chunk()): 배열을 지정된 크기의 청크로 분할합니다. 로컬 구현: 사용자 정의 함수는 총 페이지 수, 오프셋 계산 및 페이징 배열 반환을 포함하여 페이징 알고리즘을 구현합니다.
페이징은 웹 개발의 일반적인 요구 사항으로, 대량의 데이터를 작은 덩어리로 나누어 페이지 로딩 속도와 사용자 경험을 향상시킬 수 있습니다. PHP에서 배열 페이지 매김을 구현하는 방법에는 여러 가지가 있습니다.
이것은 가장 간단한 방법입니다. PHP의 array_slice()
함수를 사용하세요. 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);
LimitIterator<를 탐색하는 방법을 제공합니다. /code> 클래스: <p><div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'><ul>
<?php foreach ($paginatedUsers as $user): ?>
<li><?php echo $user['name']; ?></li>
<?php endforeach; ?>
</ul></pre><div class="contentsignin">로그인 후 복사</div></div></p>내장 함수 🎜🎜PHP 7.1 이상에서 도입된 array_chunk() 함수는 배열을 지정된 크기의 청크로 나눕니다. 🎜<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class='brush:php;toolbar:false;'><nav aria-label="Pagination">
<ul class="pagination">
<?php if ($currentPage > 1): ?>
<li class="page-item">
<a class="page-link" href="<?php echo "?page=" . ($currentPage - 1); ?>">Previous</a>
</li>
<?php endif; ?>
<?php for ($i = 1; $i <= $totalPages; $i++): ?>
<li class="page-item <?php echo ($currentPage == $i) ? 'active' : ''; ?>">
<a class="page-link" href="<?php echo "?page=" . $i; ?>"><?php echo $i; ?></a>
</li>
<?php endfor; ?>
<?php if ($currentPage < $totalPages): ?>
<li class="page-item">
<a class="page-link" href="<?php echo "?page=" . ($currentPage + 1); ?>">Next</a>
</li>
<?php endif; ?>
</ul>
</nav></pre><div class="contentsignin">로그인 후 복사</div></div>🎜네이티브 구현🎜🎜또한 사용 가능 자신만의 기능을 구현하는 함수 페이징 알고리즘: 🎜rrreee🎜실용 사례🎜🎜100명의 사용자를 포함하는 <code>$users
배열이 있고 이제 각 페이지에 10개의 데이터 조각을 표시해야 한다고 가정합니다. 🎜rrreee🎜그런 다음 다음을 수행할 수 있습니다. 페이지에 페이지가 매겨진 사용자 데이터 표시: 🎜rrreee🎜페이징 제어는 필요에 따라 구현될 수 있습니다. 예: 🎜rrreee위 내용은 PHP 배열 페이징의 구현 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!