Как разбить массив php на несколько массивов?

Пользователь

от vladimir , в категории: PHP , год назад

Как разбить массив php на несколько массивов?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jerrold_langworth , год назад

@vladimir 

Есть несколько способов разбить массив на несколько массивов в PHP. Вот некоторые из них:

  1. Используйте функцию array_chunk
1
2
3
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$chunks = array_chunk($array, 3);
print_r($chunks);


Результат:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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. Используйте цикл for
1
2
3
4
5
6
7
8
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$size = 3;
$chunks = [];
$count = count($array);
for ($i = 0; $i < $count; $i += $size) {
    $chunks[] = array_slice($array, $i, $size);
}
print_r($chunks);


Результат:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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. Используйте цикл foreach
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$size = 3;
$chunks = [];
$i = 0;
foreach ($array as $element) {
    $chunks[$i][] = $element;
    if (count($chunks[$i]) == $size) {
        $i++;
    }
}
print_r($chunks);


Результат:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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
        )

)


Во всех приведенных выше примерах массив $array разбивается на части размером 3 элемента. Вы можете изменить значение переменной $size или использовать другую логику, чтобы разделить массив на размеры, какие вам нужны.

Пользователь

от cooper.berge , 6 месяцев назад

@vladimir 

Можно также использовать встроенную функцию array_chunk для разбиения массива на подмассивы с равным количеством элементов. Пример:

1
2
3
$array = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
$chunks = array_chunk($array, 2);
print_r($chunks);


В данном случае массив будет разбит на подмассивы по 2 элемента:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Array
(
    [0] => Array
        (
            [0] => 1
            [1] => 2
        )

    [1] => Array
        (
            [0] => 3
            [1] => 4
        )

    [2] => Array
        (
            [0] => 5
            [1] => 6
        )

    [3] => Array
        (
            [0] => 7
            [1] => 8
        )

    [4] => Array
        (
            [0] => 9
            [1] => 10
        )

)