我有一个可以来自用户的任何大小的数组。
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
答案 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
}
答案 3 :(得分:1)
您可以使用array_slice
$first = array_slice( $input, 0, 100 );
$second = array_slice( $input, 100, 100 );
$third = array_slice( $input, 200, 34 );
然后继续你想要的方式。