我试图一次30个数组,以便向端点发送呼叫,该端点一次只能重新接收30个代码。现在我在阵列中有大约203行。一切都很好,直到第四轮,我不知道为什么索引(init和endt)我已经设置,搞砸了,切片不再工作,这反过来使得无法调用端点。这是代码:
requestarr[]
request[]
包含全部203个索引,{{1}}包含每个循环发送的30个索引切片。值得注意的是,我的阵列具有跟踪联邦快递号码的“自定义”键。在第4个循环中,init变为120,endt变为113.我不确定这是怎么发生的或原因。毋庸置疑,接下来的3个循环中,endt减少了7,然后减少了34,最后减少了1.没有代码可以减少endt。所以我不确定这是怎么回事。有任何想法吗?如果您需要更多信息或更多代码,我将很乐意为您提供帮助。
答案 0 :(得分:3)
要将项目拆分为块 - 请使用array_chunk
:
$chunks = array_chunk($your_data, 30);
foreach ($chunks as $chunk) {
// send $chunk to endpoint
}
答案 1 :(得分:1)
$arrcount = ceil(count($requestarr['SelectionDetails'])/30);
for ($i=0; $i < $arrcount; $i++) {
$request['SelectionDetails'] = array_slice($requestarr['SelectionDetails'], $i * 30, 30);
//call to endpoind and other code here....
}
array_slice
可以使长度参数长于数组。你只需要移动起点。