将多维数组拆分为更小的数组
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:我应该如何处理大型数组?数据库或拆分为更小的阵列?