2011-07-26 29 views
0
<?php 

    $B = array(
     0=>1, 
     1=>2, 
     2=>3, 
     3=>4, 
     4=>5, 
     5=>6, 
     6=>7, 
     7=>8, 
     8=>9, 
     9=>10, 
     10=>11 
    ); 

    function pagination_from_array($arr, $show_per_page, $page=1){ 

     $start = $show_per_page * ($page-1); 
     $end = $show_per_page * $page; 


     for($i = $start; $i < $end; $i++){ 
      echo ">>>".$arr[$i]."<br>"; 
     } 
     if($end-1 < count($arr)) { 
      echo '............'; 
     } 

    } 

    pagination_from_array($B , 6, $_GET['page']); 
    /* 
    //Dislay in html table 
    //=> page1 
     key | value 
     0  1 
     1  2 
     2  3 
     3  4 
     4  5 
     5  6 

     ........ 

    //=> page 2 
     key | value 
     6  7 
     7  8 
     8  9 
     9  10 
     10 11 
     total 1+2+3+..+11 

    */ 

    ?> 

任何人都可以幫助我實現這個?從數組中尋呼並顯示....?

+0

你得到什麼錯誤? – Charx

+0

不確定這裏要問什麼。你是什​​麼意思「實施這個」? –

回答

1

這裏是你的問題:$i是負數作爲$show_per_page * ($page-1);等於-6 因此,當你引用$arr[$i]因爲沒有在指數-6它沒有顯示任何內容,你可以嘗試像abs()的東西,例如:

for($i = $start; $i < $end; $i++){ 
    echo ">>>".$arr[abs($i)]."<br>"; 
} 

UPDATE:

那麼它實際上這樣的:$_GET['page']這是造成在你的榜樣指數負值。

更新#2:

好吧,我就跟着去了,並很快創造了這個,希望這可以讓你開始:

// Page Count 
$page_count = 100; 

// Build the array 
for($p = 1; $p <= $page_count; $p++) { 
    $pages[] = $p; 
} 

// Print the array for testing 
//echo print_r($pages, true)."\n"; 

function pagination_from_array($arr, $show_per_page, $page=1){ 
    $total_pages = count($arr); 
    $paginate_total_pages = $total_pages/$show_per_page; 

    $start = $show_per_page * ($page-1); 
    $end = $show_per_page * $page; 

    //echo "Start: ".$start."\n"; 
    //echo "End: ".$end."\n"; 
    //echo "Total: ".$total_pages."\n"; 
    //echo "Pageinate: ".$paginate_total_pages."\n"; 
    //echo "Page: ".$page."\n"; 

    if(($paginate_total_pages) + 1 < $page) { 
     return; // no pages to display 
    } 

    if($total_pages < $start) { 
     return; // no pages to display 
    } 

    for($i = $start; $i < $end; $i++){ 
     if(array_key_exists(abs($i),$arr)) { 
      echo ">>>".$arr[abs($i)]."<br />\n"; 
     }   
    } 

    if($end-1 < count($arr)) { 
     echo "............<br />\n"; 
    } 
} 

$display_pages = 6; 
$pages_to_display = (count($pages)/$display_pages) + 1; 
echo "Pages to display: ".$pages_to_display."\n"; 

for($d = 1; $d <= $pages_to_display; $d++) { 
    pagination_from_array($pages,$display_pages, $d); 
    sleep(1); 
}