2012-04-27 5 views
2
function date_compare($a, $b) 
    { 
     $t1 = strtotime($a['lastEdit']); 
     $t2 = strtotime($b['lastEdit']); 
     return $t1 - $t2; 
    }  
    usort($container, 'date_compare'); 

    $totalPages = floor($count/12); 

    $start = $page * 12 - 11; 
    $end = $page * 12; 

    $container = array_reverse($container); 
    $container = array_slice($container, $start, $end); 


    return $container; 

Мои start, кажется, не влияет на метод slice. Например, когда я на странице 2 (начало: 13 и конец: 24), я все равно получаю возвращаемый array(24). Что я упустил?Нарезка массив на странице

ответ

2

Третий параметр array_slice на самом деле не «конец», а «длина» - см. doc.

Меняем

$end = $page * 12; 

в

$len = $page * 12 - $start 

и

$container = array_slice($container, $start, $end); 

в

$container = array_slice($container, $start, $len); 

Примечание $len может быть отключено на единицу, если вы ожидали, что $end не будет включенным.

Редактировать: На самом деле, похоже, вы можете просто указать параметр длины как 11, поскольку он выглядит исправленным.

+0

Спасибо, очевидно, я неправильно прочитал документы в первый раз :) – Johan

0

От array_slice:

длина

Если длина задана и положительна, то последовательность будет иметь до того, что многие элементы в нем. Если массив короче длины , тогда будут присутствовать только доступные элементы массива. Если задана длина и отрицательная, то последовательность остановит это множество элементов из конца массива. Если он опущен, то последовательность будет иметь все от смещения вплоть до конца массива .

Возможно, вы должны указать $end - $start вместо простого $end?

Смежные вопросы