본문 바로가기
PROGRAMMING/PHP

PHP array_chunk() 배열 나누기

by itengineer 2023. 7. 10.
반응형

array_chunk() 함수는 PHP에서 사용되는 배열을 지정된 크기로 나누어 나눈 조각(chunk)으로 구성된 새로운 배열을 반환하는 함수입니다. 이 함수는 배열을 작은 그룹으로 분할하거나 페이지네이션과 같은 기능을 구현할 때 사용될 수 있습니다.

다음은 array_chunk() 함수의 구문입니다.

array_chunk(array $array, int $size [, bool $preserve_keys = false ]) : array|false

 

- $array: 분할할 배열입니다.
- $size: 각 조각(chunk)의 크기를 나타내는 정수값입니다.
- $preserve_keys (옵션): 기본값은 false입니다. true로 설정하면 원래 배열의 키(key)를 유지하고, false로 설정하면 각 조각(chunk)은 0부터 시작하는 순차적인 키(key)를 갖게 됩니다.

다음은 array_chunk() 함수를 사용하여 배열을 분할하는 예시입니다.

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

print_r($chunks);
//출력

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


위의 예시에서는 $numbers 배열을 array_chunk() 함수를 사용하여 크기가 3인 조각(chunk)으로 분할합니다. 결과적으로, 3개의 요소를 갖는 4개의 조각(chunk)으로 구성된 $chunks 배열이 생성됩니다. 각 조각(chunk)은 원래 배열의 일부 요소를 포함하고 있습니다.

array_chunk() 함수를 사용할 때, $preserve_keys 매개변수를 true로 설정하면 원래 배열의 키(key)를 유지합니다. 

$numbers = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5);
$chunks = array_chunk($numbers, 2, true);

print_r($chunks);
// 출력

Array
(
    [0] => Array
        (
            [a] => 1
            [b] => 2
        )
    [1] => Array
        (
            [c] => 3
            [d] => 4
        )
    [2] => Array
        (
            [e] => 5
        )
)


위의 예시에서는 $numbers 배열을 array_chunk() 함수를 사용하여 크기가 2인 조각(chunk)으로 분할합니다. $preserve_keys 매개변수를 true로 설정하였으므로, 원래 배열의 키(key)를 유지하고 각 조각(chunk)은 키(key)를 포함하게 됩니다.

따라서, array_chunk() 함수를 사용하여 배열을 지정된 크기로 나눌 수 있습니다. 각 조각(chunk)은 새로운 배열로 반환되며, 원래 배열의 일부 요소를 포함합니다.

 

다음은 array_chunk() 함수를 사용한 몇 가지 예입니다.

  • 페이징 기능: 웹 애플리케이션에서 긴 목록을 페이지로 분할하여 사용자에게 표시해야 할 때 array_chunk() 함수를 사용할 수 있습니다. 예를 들어, 게시판의 게시물 목록을 한 번에 표시하기보다는 페이지 단위로 나누어 표시하는 것이 성능상 유리합니다. array_chunk()를 사용하여 게시물 목록을 페이지 크기로 분할하고 각 페이지에 해당하는 데이터를 표시할 수 있습니다.
$posts = [...]; // 긴 게시물 목록 배열

$pageSize = 10; // 페이지당 게시물 수
$pageNumber = 2; // 표시할 페이지 번호

$pages = array_chunk($posts, $pageSize);
if (isset($pages[$pageNumber - 1])) {
    $currentPage = $pages[$pageNumber - 1];
    // 현재 페이지의 게시물을 표시
    foreach ($currentPage as $post) {
        echo $post;
    }
} else {
    // 유효하지 않은 페이지 번호 처리
    echo "페이지를 찾을 수 없습니다.";
}

  •  대용량 데이터 처리: 대용량 데이터를 처리해야 할 때, array_chunk() 함수를 사용하여 작은 부분 배열을 생성하고 각 부분을 순차적으로 처리할 수 있습니다. 이를 통해 메모리 소비를 줄이고 처리 시간을 최적화할 수 있습니다.
$bigData = [...]; // 대용량 데이터 배열

$chunkSize = 1000; // 각 부분 배열의 크기

$chunks = array_chunk($bigData, $chunkSize);
foreach ($chunks as $chunk) {
    // 각 부분 배열에 대한 작업 수행
    processChunk($chunk);
}

  • 다차원 배열 변환: 다차원 배열을 처리할 때, array_chunk() 함수를 사용하여 배열을 일정한 크기의 하위 배열로 분할할 수 있습니다. 이를 통해 배열을 구조적으로 조직화하거나 복잡한 데이터 처리 작업을 수행할 수 있습니다.
$matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
];

$chunkSize = 2; // 각 하위 배열의 크기

$chunks = array_chunk($matrix, $chunkSize);
// $chunks는 다음과 같이 분할됩니다:
// [
//     [[1, 2, 3], [4, 5, 6]],
//     [[7, 8, 9]]
// ]


이러한 예는 array_chunk() 함수의 일부 활용 방법을 보여줍니다. 실제로 array_chunk() 함수는 배열을 작은 조각으로 분할하는 데 유용하며, 다양한 상황에서 데이터 처리 및 구조화에 활용될 수 있습니다.

반응형

댓글