php 将平面数组拆分为n个元素的数组

dl5txlt9  于 2023-10-15  发布在  PHP
关注(0)|答案(3)|浏览(106)

有一个数组包含K个元素。从这个数组中获取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上迭代更优雅的吗?

p5cysglq

p5cysglq1#

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
        )

)
ojsjcaue

ojsjcaue2#

查看array_chunk -> 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++;
    }

有人能告诉我哪种方法更有效吗?

6ojccjat

6ojccjat3#

array_chunk函数用于创建大小相等的子数组。例如

$a=array_chunk($array,3);

相关问题