我试图将数组分成两部分。
$collection = collect( [1, 2, 15, 16] );
$groups = $collection->split( 2 );
结果是...混合:
(2) [Array(2), {…}]
0: Array(2)
0: 1
1: 2
length: 2
__proto__: Array(0)
1:
2: 15
3: 16
__proto__: Object
length: 2
__proto__: Array(0)
我不确定这是一个错误还是我错过了什么。如果我分成更多组,第一个始终是一个数组,其他组是对象。为什么这样做,如何使输出类型保持一致?
附言一个快速的解决方案是,如果集合恰好是具有数字索引的数组,则使用 array_chunk( $collection, 2 )
,如本例所示。根据下面的答案,如果索引不是数字,那么应该不会出现此问题。
这是一个明显的例子:
$a = [[1,2], [2 => 2, 3 => 3]];
echo json_encode($a);
输出为:
[[1,2],{"2":2,"3":3}]
第一个元素将是数组,因为它中的键是零索引的,第二个元素将是对象,因为它中的键不是零索引的。
不,你可能错过了一些东西。如果拆分集合,结果将是集合集合:
IlluminateSupportCollection {#1178
#items: array:2 [
0 => IlluminateSupportCollection {#1177
#items: array:2 [
0 => 1
1 => 2
]
}
1 => IlluminateSupportCollection {#1156
#items: array:2 [
2 => 15
3 => 16
]
}
]
}
您
还需要调用$groups->toArray()
方法。