[PHP] 배열을 원하는 크기로 자르는 방법 (array_slice)
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 )
원하는 대로 키도 잘 남아 있는 결과를 볼 수 있었습니다.
끝.