정의 및 사용 방법
- PHP 버전
- 4+
array_shift()
함수는
배열의 첫 번째 요소를 제거합니다.
특징
- 원본 배열 자체를 직접 수정합니다.
- 이 동작으로 배열의 길이가 하나 줄어듭니다.
- 제거된 요소를 반환합니다.
기본 예제
$array = ['orange', 'banana', 'apple'];
// 배열의 시작 부분에서 첫 번째 요소를 제거합니다.
array_shift($array);
print_r($array);
/*
출력:
Array
(
[0] => banana
[1] => apple
)
*/
array_pop()
함수는 이와 유사하지만 배열의 마지막 요소를 제거합니다.
구문
array_shift(array &$array): mixed
매개변수
&$array |
첫 번째 요소를 제거할 대상 배열(참조 변수)입니다. |
---|
반환 값
array_shift()
함수로 배열에서 제거한 첫 번째 요소 값을 반환합니다.
array_shift()
함수로 제거할 첫 번째 요소 값이 없이 배열이 비어 있으면 null
이 반환됩니다.
array_shift()
함수의 반환 값
$array = ['orange', 'banana', 'apple'];
// 배열의 시작 부분(첫 번째 값)에서 하나의 요소를 제거합니다.
$removedItem = array_shift($array);
print_r($array);
/*
출력:
Array
(
[0] => banana
[1] => apple
)
*/
echo $removedItem; // 출력: 'orange'
// 배열이 비어있을 경우 1
$empty_array = [];
$empty_array_removed_item = array_shift($empty_array); // 제거할 첫 번째 값이 없이 배열이 비어 있음
var_dump($empty_array_removed_item); // 출력: NULL
주의할 점과 여러 상황
array_shift()
함수를 사용할 때 중요한 몇 가지 개념과 주의할 점이 있습니다.
- 반환 값
- 원본 배열 수정 및 배열의 길이
- 연관 배열에서도 작동
- 큐(Queue) 구현
unset()
으로 배열의 첫 번째 요소 제거하기
반환 값
array_shift()
함수는 제거한 요소를 반환합니다. 반환된 값을 변수에 저장할 수 있습니다.
$fruits = ['apple', 'banana', 'cherry'];
$removedFruit = array_shift($fruits);
echo $removedFruit; // 'apple' 출력
원본 배열 수정 및 배열의 길이
array_shift()
함수는 원본 배열을 수정합니다. 따라서, 배열에서 요소를 제거하면 배열이 변경되고 배열의 길이가 줄어든다는 점을 이해해야 합니다.
$fruits = ['apple', 'banana', 'cherry'];
array_shift($fruits);
echo count($fruits); // 2 출력
연관 배열에서도 작동
array_shift()
함수는 순차적 배열뿐만 아니라 연관 배열(associative array)에 대해서도 작동합니다. 이 함수는 배열의 첫 번째 요소를 제거하고 반환하는 역할을 하므로 배열 유형에 제약이 없습니다.
$assocArray = ['name' => 'John', 'age' => 30];
array_shift($assocArray);
print_r($assocArray);
/*
출력:
Array
(
[age] => 30
)
*/
큐(Queue) 구현
array_shift()
함수를 사용하여 배열을 큐로 사용할 수 있습니다. 배열의 첫 번째 요소를 큐에서 제거하고 처리하는 데 유용합니다.
아래의 예제는 array_shift()
함수를 사용하여 배열을 처리하면서 배열의 요소를 활용하는 간단한 큐(Queue) 구현입니다. 이 코드는 요청을 처리하는 간단한 웹 애플리케이션을 시뮬레이션하는 데 사용될 수 있습니다.
// 초기 요청 큐 생성
$requestQueue = [];
// 요청 추가
$requestQueue[] = '요청 1';
$requestQueue[] = '요청 2';
$requestQueue[] = '요청 3';
// 요청 처리
while ($request = array_shift($requestQueue)) {
// 요청 처리
echo "처리 중: $request";
// 가상의 처리 시간을 생성
$processingTime = rand(1, 3);
sleep($processingTime); // 가상의 처리 시간 대기
echo "처리 완료: $request";
}
// 모든 요청이 처리되었을 때 실행될 코드
echo "모든 요청 처리 완료";
unset()
으로 배열의 첫 번째 요소 제거하기
$fruits = ['apple', 'banana', 'cherry'];
// 배열의 첫 번째 요소를 제거
unset($fruits[0]);
// 배열 출력
print_r($fruits);
/*
출력:
Array
(
[0] => banana
[1] => cherry
)
*/
unset()
으로 배열의 특정 요소를 제거하는 것은 주의가 필요하므로, 권장하지 않습니다. 배열의 맨 처음이나 맨 나중이 아닌 중간 요소를 삭제할 경우, 배열의 중간 요소를 삭제하면 해당 인덱스는 비어 있는 상태가 되며 재배열되지 않습니다.