반응형
Web Development · PHP
PHP foreach 심화 · 함수 · break · continue
require로 코드 분리까지
key⇒value 순회, 매개변수, 기본값, 흐름 제어, 외부 파일 임포트
시작 코드를 재사용 가능하게 만드는 도구
이번엔 foreach로 키와 값을 함께 다루기, 함수를 만들고 호출하기, break/continue로 반복 제어, require로 다른 파일의 코드 가져오기까지. PHP 프로그램을 재사용 가능한 단위로 쪼개는 기술들이다.
용어 핵심 키워드
foreach as $k=>$vkey, value 동시 추출
function함수 정의 키워드
매개변수(parameter)함수가 받는 입력 변수
인자(argument)호출 시 전달하는 값
기본값 매개변수function f($x = 10)
break반복 즉시 종료
continue현재 회차 건너뛰고 다음으로
require외부 파일 포함 (실패 시 fatal)
include외부 파일 포함 (실패 시 warning)
_once 변형한 번만 포함 (중복 방지)
1 foreach — key와 value 함께 가져오기
<?php $member = array("name" => "○철수", "age" => 20, "tall" => 170); foreach ($member as $key => $value) { print "$key : $value"; print "<br>"; } ?>
출력
name : ○철수
age : 20
tall : 170
age : 20
tall : 170
key에 따라 한국어 라벨로 매핑
foreach ($member as $key => $value) { if ($key == "name") $title = "이름"; elseif ($key == "age") $title = "연령"; elseif ($key == "tall") $title = "신장"; print "$title : $value<br>"; } // 이름 : ○철수 // 연령 : 20 // 신장 : 170
💡 더 깔끔한 방법 — 매핑이 많으면 별도 배열로 분리하면 가독성이 좋다.
$labels = ["name" => "이름", "age" => "연령"]; print $labels[$key];2 function — 코드를 재사용 단위로
<?php function print_copyright() { print "<font size=2>"; print "Copyright 2013 여러분의 이름 All rights reserved."; print "</font>"; } print_copyright(); // 호출 — 같은 작업을 여러 번 가능 ?>
함수는 같은 일을 여러 곳에서 쓰기 위한 묶음이다. 푸터의 카피라이트, 로그 출력, 입력 검증 등 반복되는 코드를 함수로 빼면 한 곳만 수정해도 전체에 반영된다.
3 매개변수 — 외부 값을 함수 안으로
<?php $myage = 19; // 전역 변수 check_adult($myage); // 호출 — $myage가 $age로 전달 function check_adult($age) { // $age = 매개변수 (지역변수) $adult_age = 20; // 함수 안 지역변수 $adult_check = ($adult_age <= $age) ? "어른" : "아이"; print $adult_check." 입니다."; } ?>
📌 함수 정의가 호출 뒤에 있어도 동작한다 — PHP는 호이스팅 비슷하게 함수를 먼저 등록하고 실행 시점에 찾는다.
| 용어 | 의미 | 예시 |
|---|---|---|
| 매개변수 (parameter) | 함수 정의 시의 변수 | function f($age) {} |
| 인자 (argument) | 호출 시 전달하는 값 | f(19); |
| 지역변수 | 함수 안에서만 유효 | $adult_age |
| 전역변수 | 스크립트 어디서나 | $myage |
반응형
4 기본값 매개변수 — 인자 생략 허용
<?php check_member(); // 인자 없이 호출 → 기본값 사용 function check_member($username = "guest", $password = "guest") { if ($username == "guest" && $password == "guest") { print "게스트님 환영합니다!"; } else { print "회원님 환영합니다!"; } } ?>
호출 시 check_member();처럼 인자를 안 주면 기본값 "guest"가 들어간다. check_member("admin", "1234")처럼 주면 그 값이 사용된다.
⚠ 기본값은 뒤쪽 매개변수에만 —
function f($a = 10, $b)처럼 앞쪽에만 기본값을 두면 사용이 어렵다. 뒤로 갈수록 기본값을 두는 게 관례.5 break — 반복 즉시 종료
<?php $member[0] = "○철수"; $member[1] = "○영희"; $member[2] = "○길동"; $member[3] = "○정자"; $member[4] = "○희동"; $i = 1; $limit = 3; foreach ($member as $key => $value) { if ($i > $limit) { print "반복을 빠져나옵니다.<br>"; break; // 반복문을 즉시 종료 } print "이름 : $value"; print "<br>"; $i++; } ?>
출력 — 3명까지만
이름 : ○철수
이름 : ○영희
이름 : ○길동
반복을 빠져나옵니다.
이름 : ○영희
이름 : ○길동
반복을 빠져나옵니다.
6 continue — 이번 회차만 건너뛰기
<?php $member = array("name" => "○철수", "tel" => "03-0000-0000", "age" => 20, "tall" => 170); foreach ($member as $key => $value) { if ($key == "name") $title = "이름"; elseif ($key == "age") $title = "연령"; elseif ($key == "tall") $title = "신장"; else { print "처리를 건너뜁니다.<br>"; continue; // 다음 반복으로 — print 건너뜀 } print "$title : $value<br>"; } ?>
break
- 반복문을 완전히 종료
- 이후 회차는 안 돌아옴
- "여기까지만 보고 끝"
continue
- 현재 회차의 남은 부분만 건너뜀
- 다음 회차는 정상 진행
- "이건 패스, 다음 거 봅시다"
7 require — 다른 파일 가져오기
같은 데이터를 여러 페이지에서 쓰거나, 함수 모음을 여러 곳에서 호출할 때 require로 가져온다. 가져온 파일의 변수와 함수는 마치 그 자리에 직접 쓴 것처럼 동작한다.
data.php
<?php
$name = "○철수";
$message = "등록 감사드립니다.";
?>
→
require.php
<?php
require("data.php");
print "$name 님<br>";
print "$message";
?>
<!-- require.php --> <html><head><title>PHP 테스트</title></head><body> <?php require("data.php"); // data.php의 모든 코드를 여기에 붙여넣기 print "$name 님<br>"; // data.php의 $name 사용 가능 print "$message<br>"; ?> </body></html>
require · include · _once 4가지
| 구문 | 파일 없을 때 | 중복 호출 | 사용 예 |
|---|---|---|---|
require |
Fatal Error — 스크립트 중단 | 여러 번 가능 | 필수 라이브러리 |
include |
Warning — 계속 실행 | 여러 번 가능 | 선택적 컴포넌트 |
require_once |
Fatal Error | 한 번만 포함 | 클래스 정의 (중복 정의 방지) |
include_once |
Warning | 한 번만 포함 | 설정 파일 등 |
※ 어떤 걸 쓸까
- require_once — 가장 흔히 권장. 필수 + 중복 방지
- require — 매 호출마다 다시 실행해야 할 때 (드물다)
- include — 없어도 페이지가 동작해야 할 때
8 자주 하는 실수
| 증상 | 원인 | 해결 |
|---|---|---|
| foreach key가 출력 안 됨 | $value만 받음 | $key => $value 형태로 |
| 함수 안의 변수가 밖에서 안 보임 | 지역변수 — 함수 끝나면 사라짐 | return으로 반환 또는 global |
| require 후 변수 못 찾음 | 경로 문제 | __DIR__ . '/data.php' 사용 |
| 같은 함수 정의 중복 에러 | require로 두 번 포함 | require_once 사용 |
| continue가 안 먹힘 | 중첩 루프에서 의도와 다른 루프 | continue 2; 처럼 레벨 지정 |
| 인자 부족 경고 | 매개변수에 기본값 없음 | = "guest"처럼 기본값 추가 |
9 핵심 한 줄 요약
PHP — FUNCTION & LOOP CONTROL
key+value 순회foreach ($arr as $k => $v) { ... }
함수 정의function 이름($파라미터) { ... }
기본값 인자function f($x = 10) — 인자 생략 가능
반복 종료break — 즉시 빠져나옴
회차 건너뜀continue — 이번만 패스, 다음 회차는 진행
파일 포함 (필수)require / require_once
파일 포함 (선택)include / include_once
함수 호이스팅정의가 호출 뒤에 있어도 OK
Tags
#PHP #foreach #function #매개변수 #기본값매개변수 #break #continue #require #include #requireOnce #티스토리
▼ 티스토리 태그 입력란 복사용
PHP, foreach, function, 매개변수, 기본값매개변수, break, continue, require, include, requireOnce, 티스토리
반응형
'php' 카테고리의 다른 글
| PHP 정렬 · 배열 조작 · 문자열 함수 완전 정리 (0) | 2026.06.11 |
|---|---|
| PHP return · 변수 범위 · static · 문자열 함수 완전 정리 (0) | 2026.06.11 |
| PHP 제어문 — if · switch · for · while · foreach 완전 정리 (0) | 2026.06.11 |
| PHP 변수 · 연산자 · 연관배열 · explode 완전 정리 (0) | 2026.06.11 |
| PHP 시작 — print · echo · HTML 임베딩 완전 정리 (1) | 2026.06.11 |
왕진 블로그

댓글