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