본문 바로가기

비개발자의 개발 일지

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

시리즈 보기
php

PHP array_unshift() — 배열 맨 앞에 요소 추가 · 재인덱싱 · push/shift 비교 완전 정리

by 왕진 2026. 7. 10.
반응형

 

 

Web Development · PHP 배열 함수

PHP array_unshift() — 배열 맨 앞에 요소 추가하기

재인덱싱 이유 · push/shift와 4방향 비교 · 반환값의 의미 완전 정리
시작 오늘 분석할 코드

array_unshift()는 배열 맨 에 하나 이상의 요소를 추가하는 함수입니다. 기존 요소들은 밀려나고 인덱스가 재설정됩니다. array_push()가 배열 끝에 추가한다면, array_unshift()는 배열 시작에 추가합니다.

<?php $data = array("사과", "귤", "감"); // 현재: [0=>"사과", 1=>"귤", 2=>"감"] array_unshift($data, "파파야", "키위"); // 배열 맨 앞으로 "파파야", "키위"를 추가 // 기존 요소는 뒤로 밀리고 인덱스 재설정 print "<PRE>"; print_r($data); print "</PRE>"; ?>
실제 출력 미리보기
[0]
사과
[1]
[2]
[0]
파파야
[1]
키위
[2]
사과
[3]
[4]

← 앞에 추가된 파파야·키위 / 기존 요소는 인덱스 2부터 시작

용어 용어 정리
array_unshift()배열 맨 앞에 하나 이상의 요소를 추가. 원본 배열을 직접 수정 (인플레이스)
재인덱싱새 요소가 앞에 추가되면 기존 숫자 키가 모두 밀려서 0부터 다시 번호 매겨짐
인플레이스함수가 배열 자체를 수정. array_push와 array_unshift 모두 원본을 바꿈
반환값추가 후 배열의 전체 요소 수(count)를 반환. 새 배열을 반환하는 것이 아님
array_push()배열 맨 뒤에 요소 추가. unshift의 반대 방향. 인덱스는 자동으로 이어짐
array_shift()배열 맨 앞에서 요소를 꺼냄(제거 + 반환). unshift의 반대 동작
array_pop()배열 맨 뒤에서 요소를 꺼냄(제거 + 반환). push의 반대 동작
큐(Queue)선입선출(FIFO) 구조. unshift(앞추가)+pop(뒤제거) 또는 push(뒤추가)+shift(앞제거)

1 기본 동작 — 왜 기존 인덱스가 전부 바뀌는가?
앞에 추가하면 모든 기존 요소가 뒤로 밀려 재번호

array_unshift()는 새 요소를 배열 앞에 삽입하므로 기존 모든 요소가 뒤로 밀립니다. 이때 PHP는 숫자 키를 0부터 다시 연속으로 부여합니다. "파파야"와 "키위"가 [0], [1]을 차지하면, 기존 "사과"는 [0]에서 [2]로 밀립니다.

$data = ["사과", "귤", "감"]; // 인덱스: 0=사과, 1=귤, 2=감 array_unshift($data, "파파야", "키위"); // 인덱스: 0=파파야, 1=키위, 2=사과, 3=귤, 4=감 // 기존 0번 사과가 2번으로 밀림 print_r($data); // 원본 $data가 직접 수정됨
⚠️ array_unshift()는 원본 배열을 직접 수정합니다. array_merge()처럼 새 배열을 반환하는 것이 아닙니다. 이 차이를 꼭 기억하세요.

2 반환값의 의미 — 왜 배열이 아니라 숫자를 반환하는가?
반환값은 추가 후 배열의 총 요소 수

array_unshift()의 반환값은 추가 작업 후 배열의 전체 요소 개수(int)입니다. 새 배열이 아닙니다. 이미 원본 배열을 수정했기 때문에 별도로 배열을 반환할 필요가 없습니다.

$data = ["사과", "귤", "감"]; // 기존 요소 3개 $count = array_unshift($data, "파파야", "키위"); echo $count; // 5 (3 + 2개 추가) // $data 자체에 결과가 들어 있음 print_r($data); // ["파파야", "키위", "사과", "귤", "감"]
※ 반환값을 꼭 받을 필요는 없습니다. 단순히 추가하려면 array_unshift($data, "값");만으로 충분합니다.

3 4방향 비교 — push / pop / shift / unshift
배열 앞뒤에 넣고 빼는 4가지 함수

PHP에는 배열의 앞뒤에서 요소를 추가/제거하는 4가지 함수가 있습니다. 이 4개를 함께 이해하면 큐(Queue)·스택(Stack) 구조를 쉽게 구현할 수 있습니다.

함수 위치 동작 반환값
array_push($a, $v) 배열 끝 요소 추가 새 요소 수
array_pop($a) 배열 끝 요소 제거 제거된 값
array_unshift($a, $v) 배열 앞 요소 추가 + 재인덱싱 새 요소 수
array_shift($a) 배열 앞 요소 제거 + 재인덱싱 제거된 값
스택 (LIFO) 구현
push(끝에 추가)
pop(끝에서 꺼내기)

마지막에 넣은 것을
먼저 꺼내는 구조
큐 (FIFO) 구현
push(끝에 추가)
shift(앞에서 꺼내기)

먼저 넣은 것을
먼저 꺼내는 구조

 

반응형

 

4 여러 요소 한 번에 추가 — 순서에 주의
인수 순서 그대로 앞에 삽입됨

array_unshift()에 여러 값을 인수로 넘기면, 인수 순서 그대로 배열 앞에 삽입됩니다. "파파야"를 먼저, "키위"를 나중에 넘기면 [0]=파파야, [1]=키위 순으로 들어갑니다. 순서가 뒤집히지 않습니다.

array_unshift($data, "파파야", "키위"); // → [파파야, 키위, 사과, 귤, 감] // 인수 순서 그대로 앞에 삽입 // 한 번에 여러 개 vs 반복 unshift — 결과 차이! array_unshift($data, "키위"); array_unshift($data, "파파야"); // → [파파야, 키위, 사과, 귤, 감] // 두 번 호출도 같은 결과 (두 번째 unshift가 앞으로)
※ 여러 번 unshift를 반복하면 마지막에 추가한 값이 가장 앞에 오게 됩니다. 원하는 순서로 한 번에 넘기는 것이 더 명확합니다.

5 연관 배열에서의 동작
문자열 키는 보존, 숫자 키만 재인덱싱

연관 배열(문자열 키)에 array_unshift()를 사용하면 새 요소는 숫자 키(0부터)를 갖고 앞에 추가됩니다. 기존 문자열 키-값 쌍은 순서가 바뀌지만 키 자체는 유지됩니다.

$data = ["apple" => "사과", "grape" => "포도"]; array_unshift($data, "신상품"); print_r($data); // Array // ( // [0] => 신상품 ← 숫자 키로 앞에 추가 // [apple] => 사과 ← 문자열 키 보존 // [grape] => 포도 // )

6 자주 하는 실수
실수 증상 해결
반환값을 새 배열로 착각 $result = array_unshift() 하면 $result에 숫자가 들어옴 원본 $data를 바로 사용, 반환값은 요소 수
인덱스를 하드코딩으로 참조 unshift 후 기존 [0]이 [2]로 밀려 엉뚱한 값 참조 foreach나 count()를 활용해 인덱스 직접 접근 자제
array_merge로 앞에 추가하려 함 array_merge(["새값"], $arr) — 가능하지만 인수 순서 혼동 앞추가가 목적이면 array_unshift()가 의도 명확
연관 배열 기존 숫자 키가 충돌 0번 키가 이미 있을 때 덮어쓰여 데이터 손실 발생 가능 연관 배열에 unshift 시 기존 숫자 키 확인 필요
여러 번 unshift 순서 혼동 두 번 호출 시 마지막 unshift가 맨 앞 — 예상 순서 아님 여러 요소는 한 번에 array_unshift($a, $v1, $v2) 로 처리

핵심 한 줄 요약

array_unshift()배열 맨 앞에 요소 추가, 원본 직접 수정 (인플레이스)
재인덱싱추가 후 숫자 키가 전부 0부터 재설정됨
반환값새 배열이 아닌 추가 후 전체 요소 수(int)
반대 함수array_push=끝추가, array_shift=앞제거, array_pop=끝제거
여러 요소 추가인수 순서대로 앞에 삽입됨 — 역순 아님

Tags

#PHP #array_unshift #배열앞추가 #배열앞에넣기 #array_push #array_shift #재인덱싱 #PHP배열함수 #PHP함수 #PHP학습 #웹개발 #티스토리
▼ 티스토리 태그 입력란 복사용
PHP, array_unshift, 배열앞추가, 배열앞에넣기, array_push, array_shift, 재인덱싱, PHP배열함수, PHP함수, PHP학습, 웹개발, 티스토리
반응형

댓글