[PHP] 배열을 원하는 크기로 자르는 방법 (array_slice)

folder 프로그래밍 calendar_month web_traffic 0

PHP 에서 배열(array)을 원하는 크기로 자르는 방법을 알아 봅시다.

일단 아래와 같은 배열이 있다고 해봅시다.

$arr = ['alpha', 'bravo', 'charlie', 'delta'];

$arr 이라는 배열은 원소가 총 4개인 배열이죠? 이 배열을 앞에서 부터 세 개 까지만 남기고 싶다면 array_slice 함수를 아래와 사용할 수 있습니다.

array_slice( $arr, 0, 3 );

위에서 사용된 각 파라미터를 뜯어보자면 아래와 같습니다.

  • $arr: 잘라낼 대상이 되는 배열
  • 0: 남겨질 원소의 시작이 되는 기준점(배열의 첫 번째 원소는 0 부터 시작)
  • 3: 기준점으로부터 몇 개의 원소까지 남길 것인지

생각보다 간단하죠?

그런데 저는 아래와 같이 생각지도 못한 상황에 처했는데 아래 예시를 보시죠.

$arr = [
    '1399' => '3', 
    '353'  => '2', 
    '688'  => '4', 
    '1217' => '2', 
];

이와 같이 키(key)와 값(value) 으로 구성된 원소 4개를 가진 배열에 array_slice( $arr, 0, 3 ) 를 적용했더니 그 결과가,

$arr = [
    [0] => '3', 
    [1]  => '2', 
    [2]  => '4', 
];

네, 키가 없어지고 값(value)만 나오는 대참사가 벌어졌습니다.

얼른 php.net으로 가서 array_slice 공식 문서를 찾아 보니,

array_slice(
    array $array,
    int $offset,
    ?int $length = null,
    bool $preserve_keys = false
): array

파라미터 중 네 번째의 $preserve_keys 가 보이시나요? 이게 키를 남겨둘지 결정하는 파라미터인데, 기본 값이 false 로 되어 있네요. 이걸 아래와 같이 true로 넣어서 array_slice 걸어보니,

array_slice( $arr, 0, 3, true )

원하는 대로 키도 잘 남아 있는 결과를 볼 수 있었습니다.

끝.

댓글 남기기