当前位置: 首页 > 知识库问答 >
问题:

使用php成批迭代数组

邴俊友
2023-03-14

我有一个我正在使用的API,它每5秒钟接受一次呼叫,比它不会响应的任何时间都多。在每次调用中,它将在一批中接受5条记录。我有一个1000条记录的列表,我需要使用api来检查,所以我想做的是每5秒钟把我的记录列表分成5个批次发送给它。

我可以让它大部分工作,但我不能计算的一点是分解记录列表,这是一个成批数组,你知道怎么做吗?

这是我在下面使用的代码,但是它每5秒钟输出一次数组的每个单独部分,而不是每5秒钟输出一次。

$my_array = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20];

    foreach ($my_array as $key => $value) {
        sleep (5);
        echo $value;
    }

共有3个答案

佴阳曦
2023-03-14

使用

if(($key + 1) % 5 == 0){ sleep(5);} 

在你的循环中

方璞
2023-03-14

如果它对其他人有帮助,我写了一个函数,允许您以块的形式处理数组。描述和细节在这里:

https://totaldev.com/php-process-arrays-batches/

mine和array\u chunk之间的主要区别在于,mine不返回较小数组的数组。它将用户定义的函数作为处理小批量的闭包。以下是函数:

// Iterate through an array and pass batches to a Closure
function arrayBatch($arr, $batchSize, $closure) {
    $batch = [];
    foreach($arr as $i) {
        $batch[] = $i;

        // See if we have the right amount in the batch
        if(count($batch) === $batchSize) {
            // Pass the batch into the Closure
            $closure($batch);

            // Reset the batch
            $batch = [];
        }
    }

    // See if we have any leftover ids to process
    if(count($batch)) $closure($batch);
}

您可以这样使用它:

// Use array in batches
arrayBatch($my_array, 5, function($batch) {
    // Do whataver you need to with the $batch of 5 items here...

    sleep (5);
});
归鸿朗
2023-03-14

你可以有第二个循环

$batch_of = 5;
$batch = array_chunk($my_array, $batch_of);
foreach($batch as $b) {

    foreach ($b as $key => $value) {

        echo $value;
    }
   sleep (5);
}

这将按预期工作

 类似资料:
  • 我有一个JSON文件,其中包含世界各地的大学列表。我想只获得特定的大学,其中数组中的字段与我需要选择的内容相匹配。我面临的问题是,每所大学都有自己的身份证号,这使得我无法弄清楚如何迭代数组。JSON文件可以在这个GitHub回购中找到。 使我将JSON文件转换为数组的代码: 我得到的一个样本是: 什么是最好的或适当的方式打印出来只有大学与或例如? 我读了Foreach循环上的留档和例子。但还是得不

  • 生成器迭代 手动迭代生成器,递归执行 AsyncTask::next,调用Generator::send方法将将yield值作为yield表达式结果。 yield表达式可能是一个异步调用,我们这里为之后把异步调用的结果作为yield表达式结果铺垫。 yield外侧括号在PHP5必须,PHP7不需要。 如, $ip = (yield async_dns_lookup(...) ); ^

  • 问题内容: 我正在尝试使用JADE迭代JSON文档。 我的服务器(运行node.js + express)正在对.get()请求执行以下操作, 这就是它呈现给客户端的东西。 我已经阅读了有关迭代数组的jade文档,并且我认为对于JSON来说,它是相同的,但是它不起作用。它只是显示一个空白。当我尝试这个 它将显示JSON文档。但是当我尝试这个 并显示空白。应该显示的时间是“电视”。如果有人可以帮助我

  • 本文向大家介绍Python迭代器与可迭代与生成器,包括了Python迭代器与可迭代与生成器的使用技巧和注意事项,需要的朋友参考一下 示例 一个迭代是一个对象,可以返回一个迭代器。具有状态且具有__iter__  方法并返回迭代器的任何对象都是可迭代的。也可能是没有状态的对象,该对象实现了__getitem__方法。-该方法可以获取索引(从零开始),并IndexError在索引不再有效时引发。 Py

  • 我有3个WinJSpromise,我想按顺序调用,直到其中一个promise完成而没有错误。 伪代码: 当然,我不能使用数组中的每个。因为这将并行执行promise。 所以首先迭代应该是顺序的,如果promise返回错误,下一个promise应该尝试,否则它应该返回成功promise的值。如果没有promise返回成功,那么整个循环应该指示失败。

  • 给定以下对象: 是否可以使用ng repeat一次迭代所有值? 我的动机是:1。我在<代码>中使用ng-repeat 有什么想法吗? 谢谢!