有一个包含K个元素的数组。获得N< N>的最佳方法是什么?这个数组有K个项目吗?
示例输入:
$x = [1,2,3,4,5,6,7,8,9,10]; // K = 10
期望的结果,当N = 3时;
$x1 = [1,2,3];
$x2 = [4,5,6];
$x3 = [7,8,9];
$x4 = [10];
显然,不需要将结果存储在变量中。只要可以通过foreach(或任何其他迭代逻辑)处理它,它应该没问题。
array_slice
的问题在于它不会从数组的开头删除N切片。 array_shift
的问题在于它不支持一次更改多个项目。有什么比迭代array_shift
更优雅吗?
答案 0 :(得分:5)
array_chunk
就是您所需要的。
<?php
$x = [1,2,3,4,5,6,7,8,9,10];
print_r(array_chunk($x,3));
输出:
Array
(
[0] => Array
(
[0] => 1
[1] => 2
[2] => 3
)
[1] => Array
(
[0] => 4
[1] => 5
[2] => 6
)
[2] => Array
(
[0] => 7
[1] => 8
[2] => 9
)
[3] => Array
(
[0] => 10
)
)
答案 1 :(得分:2)
查看array_chunk - &gt; http://www.w3schools.com/php/func_array_chunk.asp
$x = [1,2,3,4,5,6,7,8,9,10];
print_r(array_chunk($x,3,true));
或者你可以这样做 -
$x = [1,2,3,4,5,6,7,8,9,10];
$chunks = array();
while(count($x)){
$chunks[] = array_splice($x, 0,3,array());
$i++;
}
有人能告诉我哪种方法更有效吗?
答案 2 :(得分:1)
array_chunk函数用于创建大小相等的子数组。 E.g。
$a=array_chunk($array,3);