Laravel Collection chunk方法返回异常格式问题求助
Laravel集合chunk转数组出现关联数组的解决办法
问题原因
你的代码中,chunk()方法返回的是由多个子集合组成的集合,每个子集合会保留原集合里元素的原始索引键。当调用all()转成数组时,第一个子集合的元素索引是0-3(连续序列),所以输出为索引数组;第二个子集合的元素索引是4-6(非从0开始的连续键),PHP会保留这些原始键,最终呈现为关联数组格式,这就是你看到异常键值对的原因。
解决方法
方法1:重置子集合的键后转数组
对每个chunk子集合调用values()方法重置索引键,再转成数组:
$collection = collect([1, 2, 3, 4, 5, 6, 7]); $chunks = $collection->chunk(4) ->map(fn($chunk) => $chunk->values()->all()) ->all();
执行后得到的结果与你的期望一致:
[[1, 2, 3, 4], [5, 6, 7]]
方法2:直接输出JSON(若需求为JSON格式)
如果最终目的是输出JSON字符串,直接调用toJson()方法即可,Laravel会自动将子集合处理为索引数组:
$collection = collect([1, 2, 3, 4, 5, 6, 7]); $json = $collection->chunk(4)->toJson(); // 输出结果:"[[1,2,3,4],[5,6,7]]"
内容的提问来源于stack exchange,提问作者Alexey
相关产品推荐
相关产品推荐

