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)返回。我错过了什么?

4

2 回答 2

2

第三个参数array_slice实际上不是“end”,而是“length”——参见文档

所以改变

$end = $page * 12;

$len = $page * 12 - $start

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

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

如果您希望不包含在内,注释$len可能会减一。$end

编辑: 实际上,看起来您可以将长度参数指定为 11,因为它看起来是固定的。

于 2012-04-27T23:30:24.660 回答
0

array_slice

长度

如果给定长度并且为正数,则序列中将最多包含那么多元素。如果数组短于长度,则仅存在可用的数组元素。如果给定长度并且为负数,则序列将从数组末尾停止那么多元素。如果省略,则序列将包含从偏移量到数组末尾的所有内容。

所以也许你应该给$end - $start而不是平原$end

于 2012-04-27T23:32:07.370 回答