현재 위치: > 최신 기사 목록> Array_Chunk 배열은 중첩되어 다차원 배열을 분할 할 수 있습니까?

Array_Chunk 배열은 중첩되어 다차원 배열을 분할 할 수 있습니까?

M66 2025-04-26

php에서 array_chunk () 는 매우 일반적인 배열 기능입니다. 배열을 여러 개의 작은 배열로 나눌 수 있으며 각 작은 배열의 요소 수는 사용자가 지정합니다. 그러나 다차원 배열의 경우 array_chunk ()는 기본적으로 중첩 어레이를 재귀 적으로 분할하지 않습니다. 가장 바깥 쪽 배열을 전달 된 요소 수로 분할합니다.

Array_Chunk의 기본 사용

Array_Chunk () 의 ​​구문은 매우 간단하며 다음 매개 변수를 수용합니다.

 array_chunk(array $array, int $length, bool $preserve_keys = false): array
  • $ 배열 : 분할 해야하는 배열.

  • $ 길이 : 각 작은 배열에 포함 된 요소 수에 포함됩니다.

  • $ preserve_keys : 원래 배열의 키 이름을 보존할지 여부. 기본값은 False 이고 키 이름은 다시 표시됩니다.

예를 들어, 다음 코드는 1 차원 배열을 여러 개의 작은 배열로 분할합니다.

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

print_r($result);

출력 결과 :

 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
        )
)

위에서 볼 수 있듯이 Array_chunk ()$ 배열 배열을 3 개의 작은 배열로 나눕니다. 각 작은 배열은 최대 3 개의 요소를 포함합니다.

다차원 배열의 상황

배열이 다차원 인 경우, array_chunk () 의 ​​기본 동작은 그 중첩 어레이를 재귀 적으로 처리하지 않고 가장 바깥 쪽 배열 만 분할됩니다. 다차원 배열을 분할하려면 array_chunk () 가이 목표를 직접 달성 할 수 없습니다.

예:

다음과 같은 2 차원 배열이 있다고 가정합니다.

 $array = [
    ['apple', 'banana', 'cherry'],
    ['dog', 'elephant', 'fox'],
    ['grape', 'honeydew', 'kiwi']
];

Array_Chunk ()를 사용 하여이 2 차원 배열을 분할하는 경우 :

 $result = array_chunk($array, 2);

print_r($result);

출력은 다음과 같습니다.

 Array
(
    [0] => Array
        (
            [0] => Array
                (
                    [0] => apple
                    [1] => banana
                    [2] => cherry
                )

            [1] => Array
                (
                    [0] => dog
                    [1] => elephant
                    [2] => fox
                )
        )

    [1] => Array
        (
            [0] => Array
                (
                    [0] => grape
                    [1] => honeydew
                    [2] => kiwi
                )
        )
)

위에서 볼 수 있듯이 Array_Chunk ()가 2 차원 배열을 분할하면 중첩 어레이를 더 이상 분리하지 않고 대신 가장 작은 배열을 두 개의 작은 어레이로 나눕니다. 각 작은 배열에는 여전히 완전한 서브 어레이가 포함되어 있습니다.

다차원 배열을 재귀 적으로 분할하는 방법은 무엇입니까?

다차원 배열의 재귀 분할을 구현하려면 사용자 정의 재귀 함수를 통해 Array_chunk () 의 ​​동작을 시뮬레이션 할 수 있습니다. 이렇게하면 배열을 가로 지르고 array_chunk ()을 재귀 적으로 호출하여 중첩 어레이를 분할 할 수 있습니다.

다차원 배열을 재귀 적으로 분할하는 예는 다음과 같습니다.

 function recursive_array_chunk($array, $length) {
    $result = [];
    foreach ($array as $key => $value) {
        // 값이 배열 인 경우,재귀 분할
        if (is_array($value)) {
            $result[$key] = recursive_array_chunk($value, $length);
        } else {
            $result[] = $value;
        }
    }

    return array_chunk($result, $length);
}

$array = [
    ['apple', 'banana', 'cherry'],
    ['dog', 'elephant', 'fox'],
    ['grape', 'honeydew', 'kiwi']
];

$result = recursive_array_chunk($array, 2);
print_r($result);

recursive_array_chunk () 함수는 각 층을 다차원 배열로 재귀 적으로 처리하여 다차원 배열의 분할을 실현합니다. 결국 중첩 어레이도 올바르게 분할됩니다.

요약

  • Array_Chunk () 기본값은 다차 차원 어레이를 분할하여 가장 바깥 쪽 배열 만 처리하며 중첩 어레이는 재귀 적으로 처리되지 않습니다.

  • 다차원 배열을 재귀 적으로 분할하려면 구현하려면 사용자 정의 기능이 필요합니다.

  • 배열은 재귀를 통해 레이어별로 분할되어 다차원 배열의 중첩 어레이도 분할 될 수 있습니다.

이 기사가 다차원 배열에서 Array_chunk () 의 ​​적용을 이해하는 데 도움이되기를 바랍니다. 다른 질문이 있거나 더 심층 분석이 필요한 경우 웹 사이트를 방문하십시오!