Я пробовал много способов добавить разбивку на страницы. Я попытался найти и попытаться понять другие способы реализации разбивки на страницы, но никто из них не работает.
Вот как я создал страницу Index:
<?php $menuItems = array( "post1" => array( "title" => "Sample Title", "utime" => "M/d/Y", "content" => "<p>Body of the post</p>" ), "post2" => array( "title" => "Another Sample Title", "utime" => "M/d/Y", "content" => "<p>Content goes here...</p>" ), ); foreach ($menuItems as $contItem => $item) { ?> <li> <a href="dish.php?item=<?php echo $contItem; ?>"> <h1><?php echo $item["title"]; ?></h1> <small><?php echo $item["utime"]; ?></small> </a> </li> <?php } ?>
Я хотел бы знать, как я могу разбивать страницы списка массивов. Благодаря!
u может использовать простую функцию PHP, называемую array_slice ()
$menuItems = array_slice( $menuItems, 0, 10 );
показать первые 10 пунктов.
$menuItems = array_slice( $menuItems, 10, 10 );
показать следующие 10 пунктов.
ОБНОВИТЬ:
$page = ! empty( $_GET['page'] ) ? (int) $_GET['page'] : 1; $total = count( $yourDataArray ); //total items in array $limit = 20; //per page $totalPages = ceil( $total/ $limit ); //calculate total pages $page = max($page, 1); //get 1 page when $_GET['page'] <= 0 $page = min($page, $totalPages); //get last page when $_GET['page'] > $totalPages $offset = ($page - 1) * $limit; if( $offset < 0 ) $offset = 0; $yourDataArray = array_slice( $yourDataArray, $offset, $limit );
UPDATE # 2:
Пример разбивки на страницы:
$link = 'index.php?page=%d'; $pagerContainer = '<div style="width: 300px;">'; if( $totalPages != 0 ) { if( $page == 1 ) { $pagerContainer .= ''; } else { $pagerContainer .= sprintf( '<a href="' . $link . '" style="color: #c00"> « prev page</a>', $page - 1 ); } $pagerContainer .= ' <span> page <strong>' . $page . '</strong> from ' . $totalPages . '</span>'; if( $page == $totalPages ) { $pagerContainer .= ''; } else { $pagerContainer .= sprintf( '<a href="' . $link . '" style="color: #c00"> next page » </a>', $page + 1 ); } } $pagerContainer .= '</div>'; echo $pagerContainer;
Другим жизнеспособным вариантом является использование array_chunk()
:
$pagedArray = array_chunk($originalArray, 10, true); $nthPage = $pagedArray[$pageNumber];