在PHP中,如何使用偏移量迭代数组?

在PHP中,如何使用偏移量迭代数组?

问题描述:

array(
(int) 0 => '3',
(int) 1 => '5',
(int) 2 => '9',
(int) 3 => '14',
(int) 4 => '16',
(int) 5 => '17',
(int) 6 => '18',
(int) 7 => '19',
(int) 8 => '20',
(int) 9 => '23',
(int) 10 => '24',
(int) 11 => '25',
(int) 12 => '26',
(int) 13 => '28',
(int) 14 => '30',
(int) 15 => '31',
(int) 16 => '32',
(int) 17 => '33',
(int) 18 => '34',
(int) 19 => '35',
(int) 20 => '36',
(int) 21 => '37',
(int) 22 => '38',
(int) 23 => '39',
(int) 24 => '40',
(int) 25 => '41')

I have an array of numbers that I would like to iterate though via AJAX. lets say I wanted to show the first 5, then have an offset of 5.

how do I go through the array such that the first time i need it I am given [3,5,9,14,16], and then the second time [17,18,19,20,23], etc. etc.

I am thinking i would need a function that is fed the original array?

something like

function Something($array, $offset){ 

} 
  array(
(int)0 =>'3',
(int)1  =>'5',
(int)2 =>'9',
(int)3 =>'14',
(int)4 =>'16',
(int  )5 =>'17',
(int)6 =>'18',
(int)7 =>'19',
(int)8 => '20',
  (int)9 =>'23',
(int)10 =>'24',
(int)11 =>'25',
(int)12 =>'26',  
(int)13 =>'28',
(int)14 => '30',
(int)15 =>'31',
(int)16 => '32  ',
(int)17 =>'33',
(int)18 =>'34',
(int)19 => '35',
(int)20 =>  '36',
(int)21 => '37',
(int)22 =>'38',
(int)23 => '39',
(int)24 =  >'40',
(int)25 =>'41')
  code>  pre> 
 
 

我有一个数字数组,我想迭代通过 AJAX。 lets说我想显示前5个,然后偏移量为5. p>

如何通过数组,这样我第一次需要它时,我得到了[ 3,5,9,14,16],然后第二次[17,18,19,20,23]等等。 p>

我在想我需要一个 喂养的功能 他原来的数组? p>

类似 p>

  function Something($ array,$ offset){
 
} 
  代码>  pre> 
  div>

You could use array_slice() to extract a portion of the array:

$offset = 5;
$chunk_size = 5;

$chunk = array_slice($array, $offset, $chunk_size);

var_dump($chunk);

Output:

array(5) {
  [0]=>
  string(2) "17"
  [1]=>
  string(2) "18"
  [2]=>
  string(2) "19"
  [3]=>
  string(2) "20"
  [4]=>
  string(2) "23"
}

Assuming you transmit the offset with each Ajax call and that the length of your portions will always be 5, then you can use array_slice

$array = array_slice($array, $offset, 5);

foreach( $array as $k => $v )
{
...
}