2012-04-27 59 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); 

如果您預計$end未包含在內,則說明$len可能會被忽略。

編輯: 實際上,它看起來像你可以只指定長度參數爲11,因爲它看起來是固定的。

+0

謝謝,顯然我第一次誤讀了文檔:) – Johan 2012-04-27 23:37:05

0

array_slice

長度

如果長度,並給出爲肯定,則該序列將具有 高達它的許多元件。如果數組長度小於 長度,則只有可用的數組元素存在。如果給出長度爲 並且是負數,那麼該序列將停止陣列末尾的許多元素。如果省略,則 序列將具有從偏移量到 陣列末尾的所有內容。

所以也許你應該給$end - $start而不是普通的$end