2013-08-29 2 views
0

У меня есть массив с 2500 элементами. Мне нужен простой алгоритм для получения следующего.PHP: алгоритм для получения набора значений из массива

Если входной сигнал 1, он должен вернуть 1-й 50 элементов. Если входной сигнал равен 2, он должен возвращать от 51 до 100-го элемента. , если входной сигнал 3, он должен возвращать от 101 до 150-го элемента.

Я слишком смущен этим алгоритмом, и мой разум не дает никакой идеи. Кто-то, пожалуйста, помогите мне.

Примечание: я кодирование собственных пагинаций для 2500 url..And мне нужен просто алгоритм кодирования idea..not

+1

'array_slice ($ arr, ($ n-1) * 50,50)' может быть отправной точкой. – cars10m

+1

Почему вы не ищете учебник для разбивки на страницы и не понимаете, как это делается? –

+0

@blo я сделал и что учебник был основан на sql ... но у меня есть список url ​​в текстовом файле, и я преобразовал в массив. – user2728612

ответ

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

+0

Блестящее спасибо bro :) люблю тебя – user2728612

0

я думаю, вы можете просто добавить позицию и диапазон от вашего кода SQL, как это:

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

Его не sql ,, у меня есть список url ​​в текстовом файле – user2728612

+0

на самом деле, вы хотите получить результат от 1 до 50, когда вы вводите номер 1 вправо, поэтому в логике вам просто нужно установить диапазон (от 1 до 50) в некотором положении (ваш вход: 1 или т. д.) –

0

Вы индексы от 0 до 2499 справа.

Вы хотите $ count от . Позвольте мне показать вам процесс мышления.

так что если вы получаете как $paramter$start вы хотите быть 0 и $end быть 49.

позволяет увидеть:

1-$parameter составляет $ начать прямо. и 50-$paramter - $ end. ok

для 2 вы хотите $ start быть 50 и $ end быть 99;

выше не работает здесь. позволяет играть с $count

$parameter*count; почти $ конец .. мы должны играть за 0 индексации. так:

$end будет $parameter*$count-1. мы можем видеть, что это верно для 1,2, а также 3 как $parameters. $start будет ($parameter-1)*$count. просто быстро в голове, что дает 0,50,100. просто то, что мы хотим.

как @ cars10 предложил нам не нужен $end. с array_slice($arr,($parameter-1)*$count,$count);

Смежные вопросы