본문 바로가기

비개발자의 개발 일지

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

시리즈 보기
php

PHP return + list — 배열 반환과 다중 변수 분해 완전 정리

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

 

 

Web Development · PHP return array + list

PHP return + list —
여러 값을 한 번에 돌려받는 방법

date() + 배열 반환 + list()로 분해 → 오늘 날짜 출력
시작 오늘 분석할 코드

함수 하나에서 연·월·일 세 값을 한 번에 돌려받아 출력하는 코드. 키워드는 두 가지 — 함수가 return array(...)로 배열을 반환하고, 호출자는 list(...)로 그 배열을 세 변수에 한 번에 분해한다.

<?php list($year, $month, $day) = get_today(); print $year.'년'.$month.'월'.$day.'일'; function get_today(){ $year = date('Y'); $month = date('m'); $day = date('d'); return array($year, $month, $day); // 배열로 묶어서 반환 } ?>
실제 출력 결과 (실행 시점 기준)
2026년05월02일
용어 용어 정리
return array()여러 값을 배열로 묶어 반환
list()배열 원소를 여러 변수에 한 번에 분해
date()현재 시간을 형식 문자열로 반환하는 내장 함수
'Y'4자리 연도 (예: 2026)
'm'2자리 월 (01~12)
'd'2자리 일 (01~31)
.PHP 문자열 결합 연산자
디스트럭처링한 자료구조를 여러 변수로 분해하는 작업

1 함수가 여러 값을 돌려주려면?

return한 번에 하나의 값만 돌려준다. 그럼 연·월·일처럼 묶음 데이터를 어떻게 한 번에 보낼까? 두 가지 흔한 답이 있다.

배열로 묶기 (이 코드)
return array($y, $m, $d);
받는 쪽: list($y, $m, $d) = ...
용어 PHP 7.1+: [$y, $m, $d] = ...
참조 매개변수
function f(&$y, &$m, &$d)
함수 안에서 변수 직접 수정
쓰임은 줄어드는 추세
실무에서는 거의 항상 "배열을 반환"하거나 더 나아가 "객체를 반환"한다. 참조 매개변수는 가독성을 떨어뜨려서 잘 안 쓴다.

2 date() — 현재 날짜·시간 가져오기
date('Y'); // 4자리 연도 "2026" date('m'); // 2자리 월 "05" date('d'); // 2자리 일 "02" date('Y-m-d'); // "2026-05-02" date('Y-m-d H:i:s'); // "2026-05-02 14:30:45"
형식 의미
Y 4자리 연도 2026
y 2자리 연도 26
m 월 (앞 0) 05
n 월 (앞 0 없음) 5
d 일 (앞 0) 02
H 24시간 시 14
i 30
s 45
※ 서버의 시간대 설정에 따라 결과가 달라진다. 대부분의 호스팅은 UTC가 기본이라 한국 시간이 필요하면 date_default_timezone_set('Asia/Seoul')을 호출.

3 return array($a, $b, $c)
function get_today() { $year = date('Y'); $month = date('m'); $day = date('d'); return array($year, $month, $day); // └────────┬─────────┘ // 3개 원소를 가진 배열 하나 }

함수 입장에서는 배열 한 개를 돌려주는 것이다. 받는 쪽이 그걸 어떻게 다루든 함수는 모른다. 단지 호출자가 list로 풀거나 $arr[0]로 꺼내거나는 자유.


 

반응형

 

4 list() — 배열을 변수로 한 번에 분해
list($year, $month, $day) = get_today(); // ↑ ↑ // 왼쪽 변수들에 오른쪽 배열의 원소들을 순서대로 대입 // // $year = $arr[0] = "2026" // $month = $arr[1] = "05" // $day = $arr[2] = "02"
표기 도입 특징
list($a, $b) = $arr 옛 PHP 전통적, 모든 버전 지원
[$a, $b] = $arr PHP 7.1+ 짧은 문법, 현대 권장
['name' => $n] = $arr PHP 7.1+ 키 기반 분해 — 연관 배열 처리
자바스크립트의 구조 분해 할당(destructuring)과 동일한 개념. const [a, b, c] = arr;를 PHP에서 [$a, $b, $c] = $arr;로 쓴다.

5 점(.) 연산자로 여러 조각 합치기
print $year.'년'.$month.'월'.$day.'일'; // "2026"."년"."05"."월"."02"."일" // = "2026년05월02일"
. 결합 (이 코드)
$year.'년'.$month.'월'.$day.'일'
각 조각이 명시적으로 보임
큰따옴표 보간 (간결)
"{$year}년{$month}월{$day}일"
한 문장에 다 담겨 가독성↑

6 실행 흐름 단계별 추적
1
get_today() 호출함수 안으로 진입
2
$year = date('Y') → "2026"현재 연도 문자열 저장
3
$month = date('m') → "05"현재 월 문자열 저장
4
$day = date('d') → "02"현재 일 문자열 저장
5
return array("2026","05","02")3원소 배열을 호출자에게 반환
6
list($year,$month,$day) = ...호출자 측 변수 3개에 분해 할당
7
print "$year"."년".$month..."일""2026년05월02일" 화면에 출력

7 list() 의 함정 — 인덱스 순서

list는 배열의 숫자 인덱스 0, 1, 2…를 순서대로 가져온다. 연관 배열에는 그대로 쓸 수 없다.

// 일반 배열 → list 정상 작동 list($a, $b) = ["x", "y"]; // $a="x", $b="y" // 연관 배열 → list만으로는 안 됨 list($a, $b) = ["name" => "x", "age" => "y"]; // null! // PHP 7.1+ 키 기반 분해는 가능 ['name' => $a, 'age' => $b] = ["name" => "x", "age" => "y"];
※ 일부만 받기
  • 중간을 건너뛰려면 빈자리: list(, , $day) = $arr;
  • 또는 [, , $day] = $arr;
  • 받는 변수가 배열 길이보다 많으면 그 자리는 null

8 자주 하는 실수
실수 증상 해결
list 변수 순서 잘못 $year에 월이 들어가는 등 함수의 array() 순서와 list() 순서 일치
연관 배열에 list() 모두 null 키 기반 분해 또는 array_values() 변환
date('m')과 'M' 혼동 05 ↔ "May" m: 숫자, M: 영문 약자
시간대 설정 누락 UTC로 9시간 전 표시 date_default_timezone_set('Asia/Seoul')
return을 빼먹음 호출자에 null 전달 → list 모두 null 함수 마지막에 return 보장

9 한 단계 발전 — 객체 반환

현대 PHP에서는 단순한 배열보다 키 있는 배열이나 객체를 반환하는 게 권장된다.

// 연관 배열로 반환 function get_today() { return [ 'year' => date('Y'), 'month' => date('m'), 'day' => date('d'), ]; } $today = get_today(); print "{$today['year']}년{$today['month']}월{$today['day']}일"; // PHP 7.1+ 키 분해 ['year' => $year, 'month' => $month, 'day' => $day] = get_today();

핵심 한 줄 요약

return array()여러 값을 배열 한 개로 묶어 반환
list()배열을 변수 여러 개에 한 번에 분해
[ ] = $arrPHP 7.1+ 짧은 분해 문법 (현대 표준)
date()현재 시간을 형식 문자열로 변환
'Y' / 'm' / 'd'연/월/일 (앞에 0 채움)
시간대date_default_timezone_set('Asia/Seoul')
현대식키 있는 배열 반환 + 키 분해 할당
반응형

댓글