반응형
Web Development · PHP foreach
PHP foreach —
연관 배열의 key와 value를 한 번에 꺼내기
$arr as $key => $value 형식의 의미와 흐름
시작 오늘 분석할 코드
회원 정보를 담은 연관 배열(이름·연령·신장)을 foreach로 한 번씩 훑으면서 키와 값을 함께 출력하는 가장 기본적인 패턴이다.
<?php $member = array("name" => "○철수", "age" => 20, "tall" => 170); // member변수에 연관배열을 할당 foreach($member as $key => $value){ // foreach는 특정 배열의 값을 지역변수에 저장하고 그것을 사용하게 한다 // member배열에서 key와 value를 분리한다 // key는 name, value는 ○철수 print "$key : $value"; // 키와 값을 출력 print "<BR>"; } ?>
실제 출력 결과
name : ○철수
age : 20
tall : 170
age : 20
tall : 170
용어 용어 정리
연관 배열"키 => 값" 쌍으로 저장된 배열
array()배열을 만드는 함수 — 짧게 [ ] 도 가능
=>"이 키에 이 값을 매핑"이라는 화살표
foreach배열 원소를 하나씩 꺼내 반복
as"~을 ~으로 받겠다"는 키워드
$key현재 원소의 키를 받는 임시 변수명 (자유)
$value현재 원소의 값을 받는 임시 변수명 (자유)
"$var"큰따옴표 안에서 변수가 자동 치환됨
1 연관 배열이란?
일반 배열은 0, 1, 2… 같은 숫자 인덱스로 값에 접근한다. 하지만 회원 정보처럼 "이름은 누구, 연령은 몇" 같은 의미가 분명한 데이터는 이름표(key)로 접근하는 게 자연스럽다.
일반 배열
$a[0] = "○철수";$a[1] = 20;$a[2] = 170;→ 0이 무엇이지? 알 수 없음
연관 배열
"name" => "○철수""age" => 20"tall" => 170→ 키만 보면 의미가 분명
JSON·DB의 한 행·HTTP 폼 데이터 — 모두 연관 배열 구조와 닮아 있다. PHP에서 데이터를 다룰 때 가장 많이 만나는 형태.
2 array() 문법 — 키와 값 묶기
$member = array( "name" => "○철수", "age" => 20, "tall" => 170 );
| 요소 | 역할 | 예 |
|---|---|---|
"name" |
키 (key) — 이름표 | 문자열, 숫자 모두 가능 |
=> |
"이 키에 이 값을 짝짓는다" | 화살표 모양 연산자 |
"○철수" |
값 (value) — 실제 데이터 | 문자열·숫자·배열·객체 모두 가능 |
, |
다음 쌍으로 구분 | 마지막은 생략 가능 |
※ PHP 5.4+ 짧은 문법
- 요즘은
array(...)대신 대괄호[...]가 표준 $member = ["name" => "○철수", "age" => 20];- 동작은 동일, 단지 더 짧고 가독성↑
3 foreach 문법 — as $key => $value
foreach는 PHP에서 배열을 순회할 때 가장 많이 쓰는 반복문이다.
foreach ($배열 as $키 => $값) { // 매 회차마다 $키와 $값에 한 쌍씩 대입됨 }
이 코드를 한국어로 풀면: "$member 배열을 한 원소씩 가져와서, 그 키는 $key에, 값은 $value에 담아서, 블록 안에서 사용."
$key, $value는 이름이 자유다.
foreach($member as $k => $v)도 OK, foreach($member as $name => $info)도 OK. 단지 의미를 분명히 하려고 보통 $key/$value를 쓴다.4 매 회차에 일어나는 일
1
1번째 회차$key = "name", $value = "○철수" → "name : ○철수<BR>" 출력
2
2번째 회차$key = "age", $value = 20 → "age : 20<BR>" 출력
3
3번째 회차$key = "tall", $value = 170 → "tall : 170<BR>" 출력
4
배열 끝 도달 → foreach 종료다음 코드(있다면)로 진행
※ foreach는 배열에 들어 있는 순서대로 꺼낸다 (PHP는 연관 배열도 삽입 순서를 기억함). 수학적 정렬이 아니다.
반응형
5 $key 생략 — value만 필요한 경우
키가 필요 없으면 더 짧게 쓸 수 있다.
키 + 값
foreach ($arr as $k => $v)$k에 키, $v에 값
→ 키와 값 모두 사용
값만
foreach ($arr as $v)$v에 값만
→ 키가 필요 없을 때
// 값만 필요할 때 foreach ($member as $value) { print "$value<BR>"; } // 결과: ○철수, 20, 170
6 "$key : $value" — 큰따옴표의 마법
PHP의 큰따옴표 문자열 안에 $변수를 적으면, 출력 시 자동으로 그 값으로 치환된다.
$key = "name"; $value = "○철수"; print "$key : $value"; → name : ○철수 print '$key : $value'; → $key : $value (그대로) print $key . " : " . $value; → name : ○철수 (점 연산자로 결합)
| 방식 | 변수 치환 | 특징 |
|---|---|---|
큰따옴표 "…" |
됨 | 가장 짧고 직관적 |
작은따옴표 '…' |
안 됨 | 변수를 글자 그대로 보여주고 싶을 때 |
점 결합 . |
됨 (별도 연산) | 긴 문자열·복잡한 식에서 명확 |
7 자주 하는 실수
| 실수 | 증상 | 해결 |
|---|---|---|
=> 대신 = |
구문 오류 | 키-값 묶을 땐 => |
foreach 안에서 => 빼먹음 |
$key가 값을 받음 → 의도와 다름 | as $key => $value 형식 지키기 |
작은따옴표로 '$key' |
치환 안 되고 글자 그대로 출력 | 변수 치환은 큰따옴표 |
| foreach 안에서 배열 자체 변경 | 예측 불가능한 결과 | 변경하려면 참조 &$value 사용 |
| 키 충돌 (같은 키 두 번 등록) | 나중 값이 앞 값을 덮어씀 | 키는 유일해야 함 |
8 알아두면 좋은 — 참조로 받기
foreach 안에서 배열 원소를 직접 수정하고 싶을 때는 &를 붙여 참조로 받는다.
$nums = [1, 2, 3]; foreach ($nums as &$v) { $v = $v * 10; // 원본 배열을 직접 수정 } unset($v); // 안전하게 참조 끊기 print_r($nums); // [10, 20, 30]
※ 참조 사용 후엔
unset($v)로 명시적으로 끊어줘야 한다. 안 그러면 다음 코드에서 $v가 마지막 원소를 참조한 상태로 남아 미묘한 버그가 생긴다.핵심 한 줄 요약
연관 배열"key => value" 쌍으로 저장된 배열
array()배열 생성 함수 — 짧게는 [ ] 도 가능
=>키와 값을 묶는 화살표
foreach … as배열 원소를 한 번씩 꺼내 반복
as $k => $v키와 값을 동시에 받는 형식
"$var"큰따옴표 안에서 변수 자동 치환
참조 &$v배열 원소를 직접 수정할 때 (unset 필수)
반응형
'php' 카테고리의 다른 글
| PHP 함수 매개변수와 변수 스코프 — 전역/지역/삼항 완전 정리 (1) | 2026.06.13 |
|---|---|
| PHP foreach + 중첩 if — 키별 한국어 라벨 변환 완전 정리 (1) | 2026.06.13 |
| PHP continue문 — 반복 건너뛰기 완전 정리 (1) | 2026.06.12 |
| PHP break문 — foreach 반복 중단 완전 정리 (0) | 2026.06.12 |
| PHP 디렉토리 읽기 — opendir / readdir / closedir 완전 정리 (1) | 2026.06.12 |
왕진 블로그

댓글