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

の3番目のパラメータarray_sliceは、実際には「end」ではなく「length」です。ドキュメントを参照してください。

だから変更

$end = $page * 12;

$len = $page * 12 - $start

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

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

包括的ではないと$len予想される場合は、メモが1つずれている可能性があります。$end

編集: 実際には、固定されているように見えるので、長さパラメーターを11として指定できるようです。

于 2012-04-27T23:30:24.660 に答える
0

array_sliceから:

長さ

長さが指定されていて正の場合、シーケンスにはその数までの要素が含まれます。配列が長さより短い場合、使用可能な配列要素のみが存在します。長さが指定され、負の場合、シーケンスは配列の最後からその数の要素を停止します。省略した場合、シーケンスにはオフセットから配列の終わりまでのすべてが含まれます。

だからおそらくあなたは$end - $start普通の代わりに与えるべき$endですか?

于 2012-04-27T23:32:07.370 に答える