반응형
Web Development · PHP array_shift
PHP array_shift —
배열 첫 원소를 빼서 받기
["사과","귤","감"] → ["귤","감"], 빠진 "사과"는 변수에
시작 오늘 분석할 코드
<?php $data = array("사과", "귤", "감"); $apple = array_shift($data); // 첫 원소 제거 + 반환 print "<PRE>"; print_r($data); print "</PRE>"; print $apple; ?>
Array ( [0] => 귤 [1] => 감 ) 사과
array_pop의 짝 — 끝이 아니라 앞에서 뺀다. 게다가 남은 원소들의 인덱스가 0번부터 다시 매겨진다.
용어 용어 정리
array_shift()배열 첫 원소 제거 + 반환
queue (큐)먼저 들어온 것이 먼저 나가는 줄(FIFO)
FIFOFirst In First Out
인덱스 재배열남은 원소가 0번부터 새로 매겨짐
in-place원본 직접 변경
반환값제거된 첫 원소
vs poppop은 끝, shift는 앞
반대array_unshift — 앞에 추가
1 push + shift 조합 = 큐(FIFO)
$queue = []; array_push($queue, "A"); // 줄 끝에 A array_push($queue, "B"); // 줄 끝에 B array_push($queue, "C"); // 줄 끝에 C array_shift($queue); // 줄 앞에서 A 나감 array_shift($queue); // 다음 B 나감 array_shift($queue); // 마지막 C 나감
"먼저 들어온 사람이 먼저 나가는" 줄(queue) 구조. 작업 대기열·메시지 큐 등에 쓰임.
2 인덱스 재배열 효과
// 시작 [0=>사과, 1=>귤, 2=>감] // shift 후 — 0번이 빠졌지만 인덱스는 새로 0부터 [0=>귤, 1=>감] // (1=>귤, 2=>감 이 아님!)
※ 연관 배열에 사용 시: 문자열 키는 그대로, 숫자 키만 0부터 재배열된다.
3 성능 — 배열이 클수록 비싸다
array_pop은 끝에서 제거하므로 빠르다. array_shift는 모든 원소의 인덱스를 다시 매겨야 하므로 큰 배열에서는 느릴 수 있다 — O(n).
대용량 큐가 필요하면 PHP의 SplQueue(SPL 자료구조)를 쓰는 게 더 효율적이다.
반응형
4 자주 하는 실수
| 실수 | 증상 | 해결 |
|---|---|---|
| 빈 배열에 shift | null 반환 | count($arr) 확인 |
| shift 후 키 1번을 기대 | 0번부터 재배열됨 | 인덱스 의존 코드는 array_values 활용 |
| 큰 배열에서 반복 shift | 매우 느림 (O(n²)) | SplQueue 또는 마지막에 한 번만 array_slice |
핵심 한 줄 요약
array_shift()첫 원소 제거 + 반환
큐 FIFOpush + shift 조합으로 선입선출
인덱스 재배열남은 숫자 키가 0부터 다시
in-place원본 직접 변경
반대array_unshift — 앞에 추가
vs poppop은 끝, shift는 앞
성능큰 배열에 반복 shift는 비효율
반응형
'php' 카테고리의 다른 글
| PHP array_merge — 두 배열 병합 + 중복 키 덮어쓰기 완전 정리 (0) | 2026.06.15 |
|---|---|
| PHP array_unshift — 배열 앞에 원소 추가 완전 정리 (0) | 2026.06.15 |
| PHP array_pop — 배열 끝에서 원소 제거 + 반환 완전 정리 (0) | 2026.06.15 |
| PHP array_push — 배열 뒤로 원소 추가 완전 정리 (0) | 2026.06.14 |
| PHP krsort — 키 기준 내림차순 정렬 완전 정리 (0) | 2026.06.14 |
왕진 블로그

댓글