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

php将数组分为若干批

长孙逸仙
2023-03-14

我有一个数组,其中有400个(但可以是任何名称)名称,我想发送给API,但API每次最多只接收200个请求,如何将数组分块,以便每第200个项目执行一个操作?

这是我到目前为止,而不是使我的API请求,我只是试图输出数组的页面。

<?php

for ($i = 0; $i <= $smsListLimit; $i++)
    {
    if ($i <= 199)
        {
        array_push($newarray, $smsList[$i]);
        if ($i == 199)
            {
            echo “ < pre > “;
            var_dump($newarray);
            echo “ < / pre > “;
            echo “!!!!!!!BREAK!!!!!!!“;
            }
        }
    elseif ($i > 199 && $i <= 399)
        {
        unset($newarray);
        array_push($newarray, $smsList[$i]);
        if ($i == $smsListLimit)
            {
            echo “ < pre > “;
            var_dump($newarray);
            echo “ < / pre > “;
            echo “!!!!!!!BREAK!!!!!!!“;
            }
        }
    }

die();
?>

这将第一个200返回到一个数组中,但不是其余的-但是不管怎样,如果传入的数组是5000,我不想为每200写一个大量的if语句。

有人提出建议吗?

共有2个答案

阳凌
2023-03-14

如果您不需要返回一个由较小数组组成的大型数组,则可以构建这样的函数以成批处理:

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

函数如下所示:

// 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, 200, function($batch) {
    // Do whataver you need to with the $batch of 200 items here...
    // Or change the batch size from 200 to any other amount you need
    print_r($batch);
});
费明诚
2023-03-14

您将使用array\u chunk:http://php.net/manual/en/function.array-chunk.php

执行:

$input_array = array('a', 'b', 'c', 'd', 'e');
print_r(array_chunk($input_array, 2));

结果:

 Array
(
    [0] => Array
        (
            [0] => a
            [1] => b
        )

    [1] => Array
        (
            [0] => c
            [1] => d
        )

    [2] => Array
        (
            [0] => e
        )

)
 类似资料:
  • 将一个整数,分拆为若干整数的和。例如实现: 4=3+1 4=2+2 4=2+1+1 4=1+1+1+1 解决(Python) #! /usr/bin/env python #encoding:utf-8 """ """ def int_divided(m,r,out_list): if(r==0): return True tm=r while tm>0:

  • 本文向大家介绍PHP函数shuffle()取数组若干个随机元素的方法分析,包括了PHP函数shuffle()取数组若干个随机元素的方法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP函数shuffle()取数组若干个随机元素的方法。分享给大家供大家参考,具体如下: 有时候我们需要取数组中若干个随机元素(比如做随机推荐功能),那么PHP要如何实现呢?一个比较简单的解决方法是用PHP

  • 本文向大家介绍Java 实现将List平均分成若干个集合,包括了Java 实现将List平均分成若干个集合的使用技巧和注意事项,需要的朋友参考一下 1.初衷是由于调用银行接口的批量处理接口时,每次最多只能处理500条数据,但是当数据总数为510条时。我又不想第一次调用处理500条,第二次调用处理10条数据,我想要的是每次处理255条数据。 下面展示的是我的处理方法 2.写了一个简单的ListUti

  • 本文向大家介绍php从数组中随机选择若干不重复元素的方法,包括了php从数组中随机选择若干不重复元素的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php从数组中随机选择若干不重复元素的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的php程序设计有所帮助。

  • 本文向大家介绍php 从一个数组中随机的取出若干个不同的数实例,包括了php 从一个数组中随机的取出若干个不同的数实例的使用技巧和注意事项,需要的朋友参考一下 第一种算法,CSDN上别人的想法   第二种算法,自己想的。 可以在每次取出数据之后将该数据和最后没有获取的数据替换,然后再去没有取得的数据中随机获取值   感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

  • 问题内容: myArray是: 我想将其转换为JSON,例如: 我试过了: 但这正在返回: 问题答案: 您的问题是非顺序索引。 Php数组必须具有要编码为JSON数组的索引。 您可以使用array_values重置数组键: