按页面切片

时间:2012-04-27 23:28:01

标签: php

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 个答案:

答案 0 :(得分:2)

array_slice的第3个参数实际上并非“结束”,而是“长度” - 请参阅doc

所以改变

$end = $page * 12;

$len = $page * 12 - $start

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

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

如果您希望$len不包含在内,请注意$end可能会被拒绝。

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

答案 1 :(得分:0)

来自array_slice

  

长度

     

如果给出长度并且是正数,则序列将具有   其中包含许多元素。如果数组短于   长度,那么只有可用的数组元素存在。如果   给出长度并且为负数,然后序列将停止那么多   数组末尾的元素。如果省略,那么   序列将包含从偏移到结束的所有内容   阵列。

所以也许你应该给$end - $start而不是普通的$end