php算法来划分和设置数字

时间:2011-11-21 21:53:13

标签: php algorithm pagination cursor

我有一个可以来自用户的任何大小的数组。

API的每个请求中的最大值大小为100(从0到99),用户可以具有(它可以是64或137或......) 234个值在他自己的数组中,我想要的是获取前100个值,接下来的100个值,然后是存储在数组或字符串中的下34个值。

喜欢的东西;

First Hundred   : 0 - 99    //100
Second Hundred  : 100 - 199 //100  
Next Values     : 200 - 234 //34

在每个实例中,值都会附加到字符串中,如下所示。

  $lookupString = "";

  //$notfm = one-dim array of values

  for( $i = 0; $i <= 99; $i++ ){
         $lookupString .= $notfm[$i].",";
    }

 $lookup = "http://api.lol.com/1/?user_ids=".$lookupString;

有人可以帮我这个吗?我觉得这很容易,但我错过了一些东西。感谢。

可以找到json编码数组的样本here

4 个答案:

答案 0 :(得分:5)

您想使用array_chunk函数。

http://php.net/manual/en/function.array-chunk.php

$request_bits = array_chunk($notfm, 100)

foreach ($request_bits as $request_bit) {
    ...
}

或者,您可以设置一个单独的条件来在计数器为100时发出请求,清空ID数组并清空计数器,但除非内存管理是个大问题,否则array_chunk就可以解决问题。

答案 1 :(得分:3)

您可以使用array_chunk()implode()

$input_array;

// Split into chunks of 100
$chunks = array_chunk($input_array, 100);

foreach ($chunks as $chunk)
{
  // Build the lookup string
  $lookupString = implode(",", $chunk);

  // DO LOOKUP HERE
}

每当我需要使用数组时,我都会打开array functions manual page。快速浏览描述通常可以指向一个完全符合您需要的数组函数。

答案 2 :(得分:2)

您希望熟悉range()array_chunk()

// make an array with all the numbers from 1 to 1000
$notfm = range(1,1000);

// make groups of 100 each
$chunks = array_chunk($notfm, 100);

// loop over each chunk of 100
foreach ($chunks as $lookupArray) {
    $lookupString = implode(',', $lookupArray);
    $lookup = "http://api.example.com/1/?user_ids=" . rawurlencode($lookupString);
    // do stuff
}

文档:range()array_chunk()implode()

答案 3 :(得分:1)

您可以使用array_slice

$first = array_slice( $input, 0, 100 );
$second = array_slice( $input, 100, 100 );
$third = array_slice( $input, 200, 34 );

然后继续你想要的方式。