将多维数组拆分为更小的数组

Posted

技术标签:

【中文标题】将多维数组拆分为更小的数组【英文标题】:Split Multidimensional Array into Smaller Arrays 【发布时间】:2014-08-21 06:09:54 【问题描述】:

我有一个如下所示的多维数组:


  "groups": [
    
      "__v": 0,
      "_create_date": "2014-08-20T23:00:12.901Z",
      "_id": "53f5287ca78473a969001827",
      "_last_message_date": "2014-08-20T23:04:36.347Z",
      "activity": 0,
      "blocked_users": [],
      "created_by": 
        "_id": "53e84b0eba84943c6d0003f8",
        "_last_modified": "2014-08-20T00:11:05.399Z",
        "first_name": "Jegg",
        "last_name": "V"
      ,
      "curated": false,
      "diversity": 0,
      "featured": false,
      "flagged": false,
      "last_message": 
        "text": "let's talk beo",
        "created_by": 
          "_id": "53e84b0eba84943c6d0003f8",
          "first_name": "Jegg",
          "last_name": "V"
        ,
        "_id": "53f52984a78473a969001833",
        "_create_date": "2014-08-20T23:04:36.347Z"
      ,
      "member_count": 1,
      "messages_count": 1,
      "name": "Test",
      "public": true,
      "recency": 52182276.347,
      "score": 52182276.347,
      "tags": []
    ,

这种结构重复超过 3000 次,创建了一个非常大的多维数组。我想我可以使用 array_chunk($array, 300) 将数组分成更小的块。但我不知道如何准确地访问它们。

我想要做的是独立循环遍历新分块的数组。所以我想最终得到类似的东西:

$array1 = ...
$array2 = ...
$array3 = ...
$array4 = ...

...等等

然后我可以遍历每个新创建的数组,这些数组本质上是原始数组的较小组,但是在一个多维数组中包含 3000 个数组,就像我最初拥有的那样,我最终得到了 300 个中较小的数组每个数组。

我希望这是有道理的,我有点不合群。我们总是感谢您的帮助。

【问题讨论】:

这不是 php 数组。准确重复了哪一部分? 您希望通过这样拆分阵列获得什么?我不得不想象这样的结构 * 3000 加上 300 个单独的数组将使用非无关紧要的内存量。 您可以像$resultarray[0],$resultarray[1] ..... $resultarray[n] 这样访问结果数组,其中每个$resultarray[] 包含300 个项目 是的,它是一个解码的 JSON 响应。我实际上不打算在活动站点上运行它,它会按计划运行以生成带有 JSON 对象中数据的 html 站点地图。但是出于 SEO 的原因,我每页不能写超过 300 条记录,所以我需要创建许多不同的页面。我的想法(可能是蹩脚的)是遍历每个新数组并为每个限制为每页 300 个的单独的 HTML 文件编写一个单独的 HTML 文件。 @bansi 可能有用,我怎么才能知道创建了多少块? 使用countcount($resultarray) 【参考方案1】:

我认为你的数组是 json 格式的。

先解码,然后传递给array_chunk方法。

array_chunk($input_array, 300));

然后以$input_array[0][0]$input_array[0][1].......$input_array[0][299]$input_array[1][0]$input_array[1][1].....

访问它们

【讨论】:

【参考方案2】:

编辑:哦,不知何故,我完全误解了这个问题。 array_chunk 值得研究。


您可以尝试使用extract 将数组值提取到“全局”变量命名空间。

extract 接受三个参数:您希望提取的数组、标志和前缀(如果需要)。

我不确定如何提取非关联数组,但您可以尝试

$full_array = array(
    array( ... ),
    array( ... ),
    array( ... ),
    array( ... ),
    ...
);

// EXTR_PREFIX_ALL prefixes all extracted keys with wanted prefix (the third param).
$extract_amount = extract( $full_array, EXTR_PREFIX_ALL, 'prefix' );

现在您应该已提取数组并可用于变量名称$prefix0$prefix1$prefix2 等。

我不确定提取具有数百个可用值的数组有多聪明。

【讨论】:

以上是关于将多维数组拆分为更小的数组的主要内容,如果未能解决你的问题,请参考以下文章

putExtra:我应该如何处理大型数组?数据库或拆分为更小的阵列?

如何使用JavaScript将长数组拆分为更小的数组

将短语拆分为多维字符数组

如何拆分 JavaScript 多维数组并获取最后一个数组?

c#将字符串拆分为多维数组?

多维数组指向多维数组