본문 바로가기

비개발자의 개발 일지

현장 팀장에서 수출 ERP까지 — AI와 함께 시스템을 만든 기록

시리즈 보기
php

PHP array_shift — 배열 앞에서 원소 제거 + 반환 완전 정리

by 왕진 2026. 6. 15.
반응형

 

 

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는 비효율
반응형

댓글