У меня есть массив, который представляет данные, которые будут использоваться для отображения в качестве язычества.
$display_array = Array ( [0] => Array ( [0] => 1 [1] => 2 [2] => 5 [3] => 5 ) [1] => Array ( [0] => 1 [1] => 2 [2] => 5 [3] => 5 ) [2] => Array ( [0] => 1 [1] => 2 ) [3] => Array ( [0] => 1 [1] => 2 ) )
Я ХОЧУ ДЕЛАТЬ ПАГАНАЦИЮ ПОЛУЧИТЬ ОЖИДАЕМЫЙ РЕЗУЛЬТАТ, КАК ЭТО:
ЕСЛИ я определил $ show_per_page = 2
;
вызывать paganation ($ display_array, 1); // page 1 firstpage OUTPUT:
1 2
call paganation ($ display_array, 2); // следующая страница 2 OUTPUT:
5 5 Total:13 // total appear here ....//next page n
ЕСЛИ я определил $ show_per_page = 3
;
paganation ($ display_array, 1); // page 1 firstpage OUTPUT:
1 2 5
paganation ($ display_array, 2); // next page 2 OUTPUT:
5 Total:13//Now total appear here 1 2
paganation ($ display_array, 3); // следующая страница 3 OUTPUT:
5 5 Total:10 // total appear here 1
ЕСЛИ я определил $ show_per_page = 12
; вызывать paganation ($ display_array, 1); // page 1 firstpage OUTPUT:
1 2 5 5 total:13 // total here 1 2 5 5 total:13 // total here 1 2 total:3 //total 1 2 total:3 //total
У людей здесь есть идея?
Что-то наивное (потому что оно не пропускает первые несколько страниц эффективно):
// array to display // page to show (1-indexed) // number of items to show per page function pagination($display_array, $page, $show_per_page){ $start = $show_per_page * ($page-1); $end = $show_per_page * $page; $i = 0; foreach($display_array as $section){ $total = 0; foreach($section as $value){ if($i >= $end){ break 2; // break out of both loops } $total += $value; if($i >= $start){ echo $value.'<br>'; } $i++; } if($i >= $start){ echo 'total:'.$total.'<br>'; } if($i >= $end){ break; } } }