PHP:从数组中获取值集的算法

时间:2013-08-29 17:15:24

标签: php arrays algorithm

我有一个包含2500个元素的数组。我想要简单的算法来获得以下内容。

如果输入为1,则应返回前50个元素。 如果输入为2,则应返回51到100个元素。 如果输入为3,则应返回101到150个元素。

我对这个算法太过困惑了,我的想法并没有给出任何想法,有人请帮帮我。

注意:我正在为2500 url编写我自己的分页。而且我只需要算法的想法......不需要编码

3 个答案:

答案 0 :(得分:0)

我认为你可以在你的sql代码上添加位置和范围,如下所示:

"select * from blabla order by post desc limit $position,$range"

答案 1 :(得分:0)

<?php
    $ar = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30];

    function return_frame($arr, $multiplier, $frame_size=50, $preserve_keys = false) {
        return array_slice($arr, ($multiplier - 1)*$frame_size, $frame_size, $preserve_keys);

    }

    print_r(return_frame($ar, 2, 15, false));
?>

Array
(
    [0] => 16
    [1] => 17
    [2] => 18
    [3] => 19
    [4] => 20
    [5] => 21
    [6] => 22
    [7] => 23
    [8] => 24
    [9] => 25
    [10] => 26
    [11] => 27
    [12] => 28
    [13] => 29
    [14] => 30
)

看看:http://php.net/manual/en/function.array-slice.php

答案 2 :(得分:0)

您的索引从0到2499正确。

您希望 $ count 50 。 让我告诉你思考过程。

因此,如果您将 1 作为$paramter,则$start为0,$end为49。

让我们看看:

1-$parameter是$ start right。而50-$paramter是$ end。确定

为2,你希望$ start为50,$ end为99;

以上在这里不起作用。让我们玩$count

$parameter*count;几乎是$ end ..我们必须参加 0索引。这样:

$end将为$parameter*$count-1。我们可以看到1,2和3也是$parameters$start将为($parameter-1)*$count。只是快速地在头部提供 0,50,100 。正是我们想要的。

as @ cars10建议我们不需要$end。与array_slice($arr,($parameter-1)*$count,$count);