정의 및 사용 방법
- PHP 버전
- 4+
array_splice() 함수는 인덱스 기반 배열의 원하는 위치에서
요소를 제거하거나, 다른 요소로 교체하거나, 새 요소를 추가할 수 있습니다.
인덱스 배열에서 인덱스는 0부터 시작합니다.
첫 번째 요소의 인덱스는 0이고, 두 번째 요소의 인덱스는 1입니다.
특징
- 원본 배열을 직접 수정합니다.
- 매개변수를 사용해서 요소를 제거, 교체, 추가할 수 있습니다.
- 제거한 요소를 담은 배열을 반환합니다. 제거한 요소가 없을 경우 빈 배열을 반환합니다.
- 연관 배열에서는 적절하지 않으며, 인덱스 배열에서만 안전하게 사용 가능합니다.
이 함수는 인덱스 배열에서 특정 위치부터 범위를 정해 요소를 한 번에 제거하거나 교체, 추가할 수 있다는 특징이 있습니다.
기본 예제
array_splice() 함수의 기본 동작을 이해하기 위해,
인덱스 배열에서 요소를 제거, 교체, 추가하는 예제를 각각 살펴보겠습니다.
배열의 요소 제거
// 장바구니에서 구매 완료된 아이템 제거
$cart = ['티셔츠', '바지', '모자', '신발'];
/*
* <바지를 장바구니에서 제거>
* array_splice(array &$array, int $offset, ?int $length = null, mixed $replacement = [])
* $array: 수정할 원본 배열 (참조로 전달됨)
* $offset: 제거를 시작할 인덱스 (0부터 시작)
* $length (옵션): 제거할 요소의 개수
*/
$purchased = array_splice($cart, 1, 1);
// 원본 배열
print_r($cart); // ['티셔츠', '모자', '신발']
// 반환 값
print_r($purchased); // ['바지']
배열의 요소 교체
// 제품 목록에서 단종된 상품 교체
$products = ['노트북', '태블릿', '스마트폰', '모니터'];
/*
* <태블릿을 최신 모델로 교체>
* array_splice(array &$array, int $offset, ?int $length = null, mixed $replacement = [])
* $array: 수정할 원본 배열 (참조로 전달됨)
* $offset: 배열을 변경하기 시작할 인덱스 (0부터 시작)
* $length (옵션): 제거할 요소의 개수
* $replacement (옵션): 배열에 새로 추가할 요소 또는 배열
* => $length와 함께 사용하면 교체가 가능
*/
$replacedProduct = array_splice($products, 1, 1, '신형 태블릿');
// 원본 배열
print_r($products); // ['노트북', '신형 태블릿', '스마트폰', '모니터']
// 반환 값
print_r($replacedProduct); // ['태블릿']
배열의 요소 추가
// 장바구니에 새 아이템 추가
$cart = ['티셔츠', '바지', '모자'];
/*
* <모자 뒤에 신발을 추가>
* array_splice(array &$array, int $offset, ?int $length = null, mixed $replacement = [])
* $array: 수정할 원본 배열 (참조로 전달됨)
* $offset: 배열을 변경하기 시작할 인덱스 (0부터 시작)
* $length (옵션): 제거할 요소의 개수
* $replacement (옵션): 배열에 새로 추가할 요소 또는 배열
* => $length가 0이면 삭제 없이 요소 추가
*/
$addedItem = array_splice($cart, 3, 0, '신발');
// 원본 배열
print_r($cart); // ['티셔츠', '바지', '모자', '신발']
// 반환 값
print_r($addedItem); // []
구문
array_splice(
array &$array,
int $offset,
?int $length = null,
mixed $replacement = []
): array
매개변수
@$array |
조작할 대상 배열(참조 변수)입니다. 함수 호출 후 원본 배열이 직접 수정됩니다. |
|---|---|
$offset |
제거 또는 교체를 시작할 인덱스 위치입니다.
|
$length |
옵션. 제거할 요소의 개수를 지정합니다. 생략되면 offset부터 배열의 끝까지 모든 요소가 제거됩니다.
|
$replacement |
옵션. 제거된 부분을 대체할 요소들이 담긴 배열입니다.
|
반환 값
삭제된 요소를 담은 배열을 반환합니다.
- 하나의 요소를 삭제하면, 길이가
1인 배열을 반환합니다. - 삭제된 요소가 없으면, 빈 배열 (
[])을 반환합니다.
주의하세요!
반환된 배열은 0부터 다시 인덱스가 매겨집니다. 즉, 원래 배열의 키는 유지되지 않습니다.
매개변수와 반환 값 예시
$arr = ['A', 'B', 'C', 'D'];
// 1. 요소 제거
$removed1 = array_splice($arr, 1, 2);
print_r($removed1); // ['B', 'C']
// 2. 요소 추가만 (길이 0)
$removed2 = array_splice($arr, 1, 0, ['X']);
print_r($removed2); // []
// 3. 음수 인덱스
$removed3 = array_splice($arr, -2, 1);
print_r($removed3); // ['X']
변경 이력
| 버전 | 설명 |
|---|---|
| 8.0.0 | $length는 이제 null 값을 가질 수 있습니다. |
활용 예제
array_splice() 함수는 배열의 원하는 위치에서 요소를 제거, 교체, 추가할 수 있습니다.
활용 예제에서는 실제 상황에서 자주 사용하는 세 가지 예제를 통해 array_splice() 함수의 매개변수와 반환 값의 관계를 쉽게 확인해 보겠습니다.
배열 중간에 요소 추가
$fruits = ['사과', '배', '바나나'];
// '배' 뒤에 '오렌지' 추가
$added = array_splice($fruits, 2, 0, ['오렌지']);
print_r($fruits); // ['사과', '배', '오렌지', '바나나']
print_r($added); // []
특정 요소 교체
$fruits = ['사과', '배', '오렌지', '바나나'];
// '배'를 '키위'로 교체
$replaced = array_splice($fruits, 1, 1, ['키위']);
print_r($fruits); // ['사과', '키위', '오렌지', '바나나']
print_r($replaced); // ['배']
마지막 요소 제거 및 새 요소 추가
$fruits = ['사과', '키위', '오렌지', '바나나'];
// 마지막 요소를 제거하고 '망고' 추가
$removed = array_splice($fruits, count($fruits) - 1, 1, ['망고']);
print_r($fruits); // ['사과', '키위', '오렌지', '망고']
print_r($removed); // ['바나나']
같이 보기
- PHP array_map() 함수
- PHP foreach 반복문
- PHP array_slice() 함수 – 배열 자르기
- PHP unset() – 변수의 설정을 해제(삭제)하기
- PHP array_merge() 함수 – 배열끼리 합치기
- PHP array_shift() 함수 – 배열 첫 번째 요소 제거하기
- PHP array_pop() 함수 – 배열의 마지막 요소 제거하기
- PHP array_unshift() 함수 – 배열의 맨 앞에 새로운 요소를 추가하기
- PHP array_push() 함수 – 배열 끝에 요소 추가하기
- 자바스크립트 splice() 함수 – 배열의 요소 제거·교체·추가