2012-04-27 69 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