본문 바로가기

비개발자의 개발 일지

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

시리즈 보기
php

PHP array_reverse() — 배열 순서 뒤집기 · preserve_keys 옵션 완전 정리

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

 

 

Web Development · PHP 배열 함수

PHP array_reverse() — 배열 순서를 뒤집는 함수

인덱스 재설정 vs 키 보존 · 연관 배열 동작 · 실전 활용 패턴 완전 정리
시작 오늘 분석할 코드

array_reverse()는 배열 요소의 순서를 거꾸로 뒤집어 새 배열을 반환하는 함수입니다. 기본 동작은 숫자 인덱스를 재설정하지만, 두 번째 인수 preserve_keystrue로 지정하면 원래 키를 그대로 유지할 수 있습니다.

<?php $data = array("A", "B", "C", "D", "E"); $result = array_reverse($data); // 배열 요소 순서를 역순으로 뒤집음 // 숫자 키는 재설정: 0=E, 1=D, 2=C, 3=B, 4=A print "<PRE>"; print_r($result); print "</PRE>"; ?>
실제 출력 미리보기
원본 $data
[0]
A
[1]
B
[2]
C
[3]
D
[4]
E
$result (뒤집힘)
[0]
E
[1]
D
[2]
C
[3]
B
[4]
A
용어 용어 정리
array_reverse()배열 요소 순서를 역순으로 뒤집어 새 배열을 반환. 원본은 변경되지 않음
preserve_keys두 번째 인수. true면 숫자 키 보존, false(기본값)면 0부터 재인덱싱
인덱스 배열키가 0, 1, 2… 숫자인 배열. 역순 시 기본적으로 재인덱싱됨
연관 배열키가 문자열인 배열. array_reverse() 시 키가 항상 보존됨 (preserve_keys 무관)
원본 불변array_reverse()는 새 배열을 반환하며 원본 $data는 변경되지 않음
역순 정렬값을 정렬하는 rsort/arsort와 달리 array_reverse는 현재 순서 자체를 뒤집음
재인덱싱역순 후 0, 1, 2… 로 인덱스를 새로 부여하는 것. 기본 동작
스택 연산LIFO 구조에서 역순 접근이 필요할 때 array_reverse + foreach 패턴 사용

1 기본 동작 — 왜 숫자 키가 0부터 재설정되는가?
인덱스 배열의 키는 순서 번호일 뿐 — 뒤집으면 다시 0부터

인덱스 배열(숫자 키 배열)을 뒤집으면 요소 순서가 역전되고, 키도 0부터 다시 번호 매겨집니다. 원래 키 4번이었던 "E"가 뒤집힌 후에는 0번이 됩니다. 숫자 키는 순서를 나타낼 뿐이므로 PHP가 자동으로 재조정합니다.

$data = ["A", "B", "C", "D", "E"]; // 원본: [0=>"A", 1=>"B", 2=>"C", 3=>"D", 4=>"E"] $result = array_reverse($data); // 결과: [0=>"E", 1=>"D", 2=>"C", 3=>"B", 4=>"A"] // 키가 0부터 다시 시작됨 // 원본은 그대로 print_r($data); // [0=>"A", 1=>"B"...] 변화 없음
※ array_reverse()는 원본을 바꾸지 않습니다. 역순 결과가 필요하면 반드시 변수에 저장하세요.

2 preserve_keys — 왜 키를 보존하는 옵션이 필요한가?
원래 인덱스 번호가 의미를 가질 때 사용

두 번째 인수 preserve_keystrue로 지정하면 역순으로 뒤집으면서도 원래 숫자 키를 그대로 유지합니다. 인덱스 번호 자체가 ID나 위치 정보로 의미를 가질 때 필요합니다.

$data = ["A", "B", "C"]; // preserve_keys: false (기본값) — 키 재설정 print_r(array_reverse($data)); // [0=>"C", 1=>"B", 2=>"A"] // preserve_keys: true — 원래 키 유지 print_r(array_reverse($data, true)); // [2=>"C", 1=>"B", 0=>"A"] ← 인덱스 2가 앞으로 왔지만 키값은 2 그대로
※ 문자열 키(연관 배열)는 preserve_keys 값과 무관하게 항상 키가 보존됩니다. 이 옵션은 숫자 키에만 영향을 줍니다.

3 연관 배열에서의 동작
문자열 키는 preserve_keys 없이도 항상 유지됨

연관 배열(문자열 키 배열)은 두 번째 인수와 관계없이 키가 항상 보존됩니다. 순서만 역전될 뿐, 각 키-값 쌍은 그대로 유지됩니다.

$prices = ["apple" => 1500, "banana" => 800, "grape" => 3000]; print_r(array_reverse($prices)); // Array // ( // [grape] => 3000 ← grape가 앞으로 // [banana] => 800 // [apple] => 1500 ← apple이 뒤로 // ) // 키는 그대로, 순서만 역전

 

반응형

 

4 array_reverse vs 정렬 함수 차이
"뒤집기"와 "정렬"은 완전히 다른 개념

array_reverse()는 현재 배열의 순서를 물리적으로 뒤집는 것입니다. 값의 크기와 관계없이 그냥 순서만 반전합니다. 반면 rsort()arsort()는 값의 크기 기준으로 내림차순 정렬합니다.

array_reverse() — 순서 반전
$a = [3, 1, 4, 1, 5];
array_reverse($a);
결과: [5, 1, 4, 1, 3]
순서만 뒤집힘, 정렬 아님
rsort() — 값 기준 내림차순
$a = [3, 1, 4, 1, 5];
rsort($a);
결과: [5, 4, 3, 1, 1]
값 크기 기준으로 정렬
※ 이미 오름차순으로 정렬된 배열을 내림차순으로 만들 때는 rsort() 대신 sort() + array_reverse() 패턴도 사용합니다.

5 실전 활용 패턴 — 언제 쓰는가?
최신순 출력, 히스토리 역순 표시에 자주 활용

array_reverse()는 데이터베이스에서 받은 배열을 뒤집어 최신 데이터를 먼저 표시할 때 자주 쓰입니다. 타임라인, 댓글, 로그 등 시간 순서가 있는 데이터를 역순으로 보여줄 때 유용합니다.

// 게시글 ID를 오래된 순서로 받았을 때 최신순으로 바꾸기 $posts = [101, 102, 103, 104, 105]; $latest_first = array_reverse($posts); // [105, 104, 103, 102, 101] // 경로 배열을 역순으로 breadcrumb 만들기 $path = ["홈", "카테고리", "PHP", "배열"]; $breadcrumb = array_reverse($path); // ["배열", "PHP", "카테고리", "홈"]

6 자주 하는 실수
실수 증상 해결
반환값을 변수에 저장 안 함 원본이 바뀐 줄 알고 쓰다가 순서가 그대로인 원본 참조 $result = array_reverse($data) 형태로 저장
정렬된 배열을 뒤집으려고 rsort 사용 값 크기 기준 정렬이 되어 원하는 역순이 아님 이미 정렬된 배열은 array_reverse()로 뒤집기
preserve_keys 의미를 모르고 기본값 사용 인덱스 번호가 의미 있는데 0부터 재설정됨 원래 키가 필요하면 array_reverse($arr, true)
연관 배열에서 preserve_keys 필요하다고 오해 불필요한 true 인수 추가로 혼란 문자열 키는 자동 보존 — 옵션 불필요
array_reverse를 인플레이스 함수로 착각 원본 배열은 변경되지 않아 빈 배열로 보이는 혼란 PHP 배열 함수는 대부분 새 배열 반환 — 항상 결과 저장

핵심 한 줄 요약

기본 동작요소 순서 역전 + 숫자 키 재인덱싱 (0부터 다시)
preserve_keys: true역순 유지하면서 원래 숫자 키 보존 (문자열 키는 항상 보존)
정렬과의 차이값 크기 무관하게 현재 순서만 물리적으로 뒤집음
원본 불변새 배열을 반환, $data 자체는 변하지 않음
주요 활용최신순 출력, 히스토리 역순, 스택 구조 탐색

Tags

#PHP #array_reverse #배열뒤집기 #순서반전 #preserve_keys #연관배열 #인덱스배열 #PHP배열함수 #PHP함수 #PHP학습 #웹개발 #티스토리
▼ 티스토리 태그 입력란 복사용
PHP, array_reverse, 배열뒤집기, 순서반전, preserve_keys, 연관배열, 인덱스배열, PHP배열함수, PHP함수, PHP학습, 웹개발, 티스토리
반응형

댓글