上一頁和下一頁的鏈接我有一個這樣的數組:PHP,產生從陣列與數字
$pages = (1, 29, 209, 389, 440, 527)
而且我想通過這些頁面進行簡單的HTML導航。只有「第一」,「最後」,「上一頁」和「下一頁」鏈接。 當我點擊'下一個'/'prev'鏈接時,他們必須相應地改變。 例如當我在389頁prev和next是209和440。如果我在440頁prev和next是389和527
上一頁和下一頁的鏈接我有一個這樣的數組:PHP,產生從陣列與數字
$pages = (1, 29, 209, 389, 440, 527)
而且我想通過這些頁面進行簡單的HTML導航。只有「第一」,「最後」,「上一頁」和「下一頁」鏈接。 當我點擊'下一個'/'prev'鏈接時,他們必須相應地改變。 例如當我在389頁prev和next是209和440。如果我在440頁prev和next是389和527
這裏有一個簡單的方法:
$pages = array(1, 29, 209, 389, 440, 527);
$current = isset($_GET['page']) ? $_GET['page'] : $pages[0];
// current page
$key = array_search($current, $pages);
echo 'current page: ' . $pages[$key] . '<br />';
// previous page
$prev = $key - 1;
if ($prev >= 0 && $prev < count($pages)) {
echo '<a href="?page=' . $pages[$prev] . '">prev</a> | ';
} else {
echo 'prev | ';
}
// next page
$next = $key + 1;
if ($next >= 0 && $next < count($pages)) {
echo '<a href="?page=' . $pages[$next] . '">next</a>';
} else {
echo 'next';
}
假設鍵將永遠是爲了,那麼第一頁將始終爲$pages[0]
,並獲得最後你可以使用$pages[key(array_slice($pages, -1, 1, true))]
試試這個:
<?php
$pages = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
$active = 1;
$last = false;
$next = false;
if (isset($_GET['page']))
{
$active = $_GET['page'];
$last = $active - 1;
$next = $active + 1;
if (!in_array($next, $pages))
{
$next = false;
}
if (($last < 0) or !in_array($last, $pages))
{
$last = false;
}
}
?>
<ul>
<li>
<a href="<?= $last != false ? '?page=' . $last : '' ?>"><- LAST</a>
</li>
<?php foreach ($pages as $page): ?>
<li><a href="?page=<?= $page ?>"><?= $page ?> <?= $page == $active ? ' is active!' : ''?></a></li>
<?php endforeach; ?>
<li>
<a href="<?= $next != false ? '?page=' . $next : '' ?>">NEXT -></a>
</li>
</ul>
<ul>
<?php
$pages = [1,4,89,100,121,224,443,527];
$thisPage = $_GET['page'];
foreach($pages as $key => $page){
if($thisPage == $page){
$thisPageKey = $key;
}
}
foreach($pages as $key => $page){
if($key==0){
echo '<li><a href="HOST?page='.$pages[0].'">first</a></li>';
}
if($key+1==count($pages)){
echo '<li><a href="HOST?page='.$pages[$key].'">last</a></li>';
}
if(array_key_exists($thisPageKey-1, $pages) && $thisPage == $page){
echo '<li><a href="HOST?page='.$pages[$thisPageKey-1].'">prev</a></li>';
}
if(array_key_exists($thisPageKey+1, $pages) && $thisPage == $page){
echo '<li><a href="HOST?page='.$pages[$thisPageKey+1].'">next</a></li>';
}
}
?>
</ul>
function printPager($pageList,$currentPage)
{
$links="";
if(($currentIndex = array_search($currentPage, $pageList))!== NULL)
{
$links .=
//first
($currentIndex!=0?"<a href='/".($pageList[0])."'>First</a> ":"") .
//prev
(isset($pageList[$currentIndex-1])?"<a href='/".($pageList[$currentIndex-1])."'>Prev</a> ":"").
//next
(isset($pageList[$currentIndex+1])?"<a href='/".($pageList[$currentIndex+1])."'>Next</a> ":"").
//last
($currentIndex!=count($pageList)-1?"<a href='/".($pageList[count($pageList)-1])."'>Last</a>":"");
}
echo $links;
}
printPager(array(20,4,10,14),20);
你可以試試這個
$pages=array(1, 29, 209, 389, 440, 527);
foreach ($array_keys=array_keys($pages) as $array_keys) {
$pages_invert[ $pages[$array_keys] ]=$array_keys;
}
echo '<a href="navi.php?page_id='.$pages[0].'">first ('.$pages[0].')</a>';
echo ' | ';
if($pages_invert[$_GET['page_id']]-1 >= 0) echo '<a href="navi.php?page_id='.$pages[$pages_invert[$_GET['page_id']]-1].'">previous ('.$pages[$pages_invert[$_GET['page_id']]-1].')</a> ';
else echo 'previous';
echo ' | ';
echo 'current ('.$_GET['page_id'].')';
echo ' | ';
if($pages_invert[$_GET['page_id']]+1 <= 5) echo '<a href="navi.php?page_id='.$pages[$pages_invert[$_GET['page_id']]+1].'">next ('.$pages[$pages_invert[$_GET['page_id']]+1].')</a>';
else echo 'next';
echo ' | ';
echo '<a href="navi.php?page_id='.$pages[count($pages)-1].'">last ('.$pages[count($pages)-1].')</a>';
的的foreach命令在$頁陣列,使原來的陣列用於跳躍的反轉,從目前到一個和下一個數組的鍵。
要預覽陣列的樣子,把這個代碼: 任何線ARTER您$網頁數組定義
<?
echo '<pre>';
print_r($pages);
echo '</pre>';
echo '<pre>';
print_r($pages_invert);
echo '</pre>';
?>
請注意在$頁面陣列是3項最小的項目。