PHP Interactive Learning Hub

PHP 코드 실행 시각화 포털

ch03(기초)부터 ch10(쿠키·세션)까지 총 92개 PHP 예제 프로그램의 단계별 실행 흐름, 변수 상태 및 메모리 변화를 직관적으로 체험하세요.

총 시뮬레이션: 92개
학습 챕터: ch03 ~ ch10 (8개 장)
지원 기능: 단계별 제어 · 메모리 모니터 · 실시간 브라우저 뷰
표시 중: 92 / 92개

검색 결과가 없습니다

입력하신 검색어와 일치하는 시각화 예제를 찾을 수 없습니다. 다른 검색어를 입력해 보세요.

ch03

PHP 기초 문법과 입출력

주석문(설명문), echo 출력, HTML 태그 믹스, 문법, $_GET 파라미터 수신 및 계산

11개 예제
exam03-01.php

PHP 주석문(설명문) 시각화

C++ 스타일(//), 여러 줄 주석(/* */), 쉘 스타일(#) 주석의 파싱 무시 원리

ch03 시각화 실행 →
exam03-02.php

PHP 주석문 사용 위치 오류 및 해결 시각화

HTML 영역에 PHP 주석(//)을 사용했을 때 텍스트로 노출되는 오류와 올바른 해결법 2가지

ch03 시각화 실행 →
exam03-03.php

PHP 주석문 중첩 오류(Parse Error) 시각화

여러 줄 주석(/* */) 내부에서 또 다시 /* */를 중첩할 때 발생하는 문법 오류

ch03 시각화 실행 →
exam03-04.php

PHP echo 출력문 기초 시각화

문자열, 정수, 변수, 산술 연산식, 함수 반환값 출력과 줄바꿈 부재 현상 관찰

ch03 시각화 실행 →
exam03-05.php

PHP echo
줄바꿈 출력 시각화

echo "
";를 항목 사이에 삽입하여 브라우저 화면에서 줄바꿈을 구현하는 방법

ch03 시각화 실행 →
exam03-06.php

HTML과 PHP 블록 인라인 분리 시각화

필요한 위치마다 개별 블록을 삽입하여 HTML과 혼합 구성하는 방식

ch03 시각화 실행 →
exam03-07.php

PHP 단축 출력 태그() 시각화

을 간결하게 축약하는 단축 문법

ch03 시각화 실행 →
exam03-08.php

단축 출력 태그와 HTML 태그의 직접 결합 시각화

" ?> 대신 PHP 태그 뒤에 HTML
을 직접 배치하는 최적화

ch03 시각화 실행 →
exam03-09.php

PHP GET 파라미터($_GET) 입력 시각화

URL 쿼리스트링 ?num=값을 통해 클라이언트가 전달한 데이터를 PHP에서 수신하여 출력

ch03 시각화 실행 →
exam03-10.php

PHP 복수 GET 파라미터($_GET['a'], $_GET['b']) 시각화

?a=값1&b=값2 앰퍼샌드(&)로 연결된 여러 쿼리 파라미터 분리 및 개별 추출

ch03 시각화 실행 →
exam03-11.php

PHP GET 입력값 연산 (총점 및 평균) 시각화

국어(kor), 수학(mat), 영어(eng) 점수를 쿼리스트링으로 받아 총점(합산)과 평균 계산 후 출력

ch03 시각화 실행 →
ch04

데이터 타입과 배열

문자열, 정수, 실수, 불리언, 변수 치환 및 이스케이프, gettype(), 1·2차원 인덱스/연관 배열, $_SERVER

16개 예제
exam04-01.php

문자열 상수(작은따옴표 vs 큰따옴표) 시각화

작은따옴표(' ')의 문자 그대로 해석 vs 큰따옴표(" ")의 변수/이스케이프 문자 치환

ch04 시각화 실행 →
exam04-02.php

정수형 상수 (10진수, 8진수, 16진수) 시각화

접두사에 따른 10진수(10), 8진수(012), 16진수(0xA) 진법 변환과 내부 10진수 출력 원리

ch04 시각화 실행 →
exam04-03.php

실수형 상수 (소수점 및 지수 표기법) 시각화

부동소수점 10.5 및 과학적 지수 표기 10.5e+2, 10.5e-2 해석

ch04 시각화 실행 →
exam04-04.php

사용자 정의 상수 (define) 시각화

define("상수명", 값)으로 불변의 상수를 정의하고 $ 없이 사용하는 원리

ch04 시각화 실행 →
exam04-05.php

변수 선언 및 값의 복사 대입 시각화

$var2 = $var1; 값에 의한 전달(Copy by Value)과 문자열 내 변수 출력

ch04 시각화 실행 →
exam04-06.php

변수명 접미사(한글 조사) 결합 오류 시각화

"$var1입니다"처럼 변수명 바로 뒤에 한글 조사를 붙였을 때 발생하는 미정의 변수 오류

ch04 시각화 실행 →
exam04-07.php

중괄호 문법({$var})을 통한 변수명 경계 설정 시각화

"{$var1}입니다"로 변수명의 시작과 끝을 중괄호로 명시하여 안전하게 치환하는 해결책

ch04 시각화 실행 →
exam04-08.php

변수명 텍스트 출력 의도 오류 시각화

"변수 $var1에..."에서 변수명 자체($var1)를 텍스트로 찍으려다 값(10)으로 치환되어 버리는 현상

ch04 시각화 실행 →
exam04-09.php

달러 기호 이스케이프(\$var) 시각화

\$var1으로 역슬래시 이스케이프를 적용하여 $ 기호 자체를 문자로 출력하는 해결책

ch04 시각화 실행 →
exam04-10.php

변수의 동적 자료형(gettype) 변환 시각화

정수(integer), 실수(double), 문자열(string) 및 값 재할당에 따른 타입 자동 변환

ch04 시각화 실행 →
exam04-11.php

스칼라 배열 및 자동 인덱싱($arr[]) 시각화

명시적 인덱스($arr[0])와 자동 인덱스 생성($arr[]) 방식의 비교

ch04 시각화 실행 →
exam04-12.php

연관 배열 (Associative Array) 시각화

숫자 인덱스 대신 문자열 키(Key)를 사용하여 값(Value)을 저장하는 연관 배열

ch04 시각화 실행 →
exam04-13.php

array() 생성 함수를 이용한 배열 초기화 시각화

array(10, 20, 30) 및 array("Lee" => 100, ...) 함수를 이용한 일괄 초기화

ch04 시각화 실행 →
exam04-14.php

2차원 스칼라 배열 초기화 시각화

행과 열 2개 첨자($arr[row][col])를 갖는 2차원 행렬 구조

ch04 시각화 실행 →
exam04-15.php

2차원 연관 배열 (Nested Associative Array) 시각화

$arr['han']['weight'] 사람 이름과 신체 스펙(키, 체중)을 매핑하는 2차원 연관 구조

ch04 시각화 실행 →
exam04-16.php

슈퍼글로벌 특수배열 ($_SERVER) 시각화

웹 서버 환경, 클라이언트 접속 정보, 요청 URI 등을 보관하는 슈퍼글로벌 $_SERVER

ch04 시각화 실행 →
ch05

연산자와 표현식

산술, 증감(전위/후위), 문자열 연결, 타입 캐스팅, 비교(== vs ===), 논리 연산, 삼항 연산, 우선순위 함정

12개 예제
exam05-01.php

기본 산술 연산자 (+, -, *, /, %) 시각화

두 정수(10, 3)의 덧셈, 뺄셈, 곱셈, 나눗셈(실수 반환), 나머지(모듈로) 연산

ch05 시각화 실행 →
exam05-02.php

증감 연산자 (후위 증가 vs 전위 증가) 시각화

$a++(후위 증가), $b--(후위 감소) 및 ++$a(전위 증가), --$b(전위 감소)

ch05 시각화 실행 →
exam05-03.php

문자열 연결 연산자(.) 시각화

마침표(.) 연산자를 사용한 문자열 간 결합 및 숫자-문자열 자동 결합

ch05 시각화 실행 →
exam05-04.php

연산자에 따른 자동 타입 변환(Type Juggling) 시각화

결합 연산자(.)는 문자열로, 산술 연산자(+)는 숫자로 타입을 강제 변환

ch05 시각화 실행 →
exam05-05.php

복합 대입 연산자 (+=, -=, %= 등) 시각화

$a += $b, $a -= $b, $a %= $b 및 우측 복합식의 결합 순서

ch05 시각화 실행 →
exam05-06.php

동등 비교(==) vs 일치 비교(===) 시각화

정수 100과 실수 100.0의 값 비교(==: true)와 자료형 일치 비교(===: false)

ch05 시각화 실행 →
exam05-07.php

부동소수점 연산 비교 (!=, ) 시각화

99.9 + 0.1 연산 결과와 100의 비교, != 및 <>(같지 않다) 연산자

ch05 시각화 실행 →
exam05-08.php

엄격한 불일치(!==) 및 정수 덧셈 비교 시각화

실수 덧셈(99.9+0.1) vs 정수 덧셈(99+1)과 === / !==의 타입 검증

ch05 시각화 실행 →
exam05-09.php

논리 연산자 (&&, and, ||, or, xor, !) 시각화

논리곱(AND), 논리합(OR), 배타적 논리합(XOR), 부정(NOT)의 진리표 동작

ch05 시각화 실행 →
exam05-10.php

삼항 조건 연산자 (? :) 시각화

(조건식) ? 참일_때_값 : 거짓일_때_값의 평가 및 분기 실행

ch05 시각화 실행 →
exam05-11.php

연산자 우선순위 (사칙연산과 괄호) 시각화

/가 +보다 먼저 실행되는 함정 해결 (a+b+c)/3 및 문자열 결합 우선순위

ch05 시각화 실행 →
exam05-12.php

논리 연산자 우선순위 함정(|| vs or) 시각화

=(대입)보다 높은 ||/&& vs =보다 낮은 or/and의 파싱 차이

ch05 시각화 실행 →
ch06

조건 제어문 (if & switch)

단일 if, if-else, 중첩 조건문, else if 사다리, switch-case 다중 분기 및 조건 평가

10개 예제
exam06-01.php

PHP if 조건문 실행 과정 시각화

난수 생성 → 1차 출력 → 조건 판별($a < 0) → 부호 반전(-$a) → 최종 출력 전 과정 분석

ch06 시각화 실행 →
exam06-02.php

PHP if-else 조건문 실행 과정 시각화

난수 생성 → 1차 출력 → 양방향 조건 판별($a ≥ 0) → if($a=$a) 또는 else($a=-$a) 분기 실행 → 최종 출력

ch06 시각화 실행 →
exam06-03.php

PHP 중첩 if-else 조건문 실행 과정 시각화

난수 점수 생성(0~100점) → 1차 점수 출력 → 다단계 중첩 조건 검사($score ≥ 90 / 80 / 70 / 60 / 나머지) → 해당 평점 출력 및 하위 블록 건너뜀(Skip)

ch06 시각화 실행 →
exam06-04.php

PHP else if 조건문 실행 과정 시각화

중첩 if-else(06-03)의 깊은 들여쓰기를 개선한 else if 사다리 구조 시각화

ch06 시각화 실행 →
exam06-05.php

PHP 조건 순서 논리 오류(Logical Bug) 시각화

조건식 순서가 잘못 작성되어 60점 이상의 모든 점수가 "양"으로 판정되는 버그 분석

ch06 시각화 실행 →
exam06-06.php

PHP 복합 논리 연산자(&&)와 elseif 실행 시각화

상하한 범위 지정(70 > $score && $score >= 60)을 통해 조건 순서와 무관하게 정확한 평점을 판별

ch06 시각화 실행 →
exam06-07.php

PHP switch문 Fall-Through(낙하 현상) 시각화

break;가 생략되었을 때 일치한 case 이후의 모든 하위 case들이 연달아 실행되는 과정

ch06 시각화 실행 →
exam06-08.php

PHP switch문과 break; 실행 과정 시각화

각 case 뒤에 break;를 추가하여 원하는 해당 상품 1개만 정확히 출력하고 즉시 탈출하는 정상 패턴

ch06 시각화 실행 →
exam06-09.php

PHP switch 다중 case 결합(Grouping) 시각화

여러 case 라벨을 나란히 배치하여 공통 실행문으로 모아주는(Fall-Through 의도적 활용) 패턴 분석

ch06 시각화 실행 →
exam06-10.php

PHP switch문과 수식(Expression: $num % 2) 실행 시각화

변수 자체가 아닌 나머지 연산식(Modulo)의 결과값(0 또는 1)을 switch 조건식으로 평가

ch06 시각화 실행 →
ch07

반복문 (for, while, foreach)

for, while, do-while 루프, 중첩 구구단 표, break, continue 무한루프 버그 및 해결, foreach 배열 순회

11개 예제
exam07-01.php

PHP for 반복문 4단계 사이클 실행 시각화

① 초기화($i=0) ➔ ② 조건식($i<=10) ➔ ③ 본문 실행(echo) ➔ ④ 증감식($i++)의 순환 과정 추적

ch07 시각화 실행 →
exam07-02.php

PHP for문 대입 연산자 누락 무한 루프(Infinite Loop) 시각화

증감식에 $i += 2 대신 $i + 2를 써서 변수 값이 갱신되지 않고 0으로 고정되는 치명적 버그

ch07 시각화 실행 →
exam07-03.php

PHP for문 1~100 짝수의 합 누적 계산 시각화

복합 대입 연산자 $i += 2를 사용하여 2씩 증가시키며 $sum에 누적합산

ch07 시각화 실행 →
exam07-04.php

PHP while 반복문 1~100 홀수의 합 계산 시각화

외부 초기화($i=1) ➔ 조건 판별(while ($i <= 100)) ➔ 내부 누적 및 증감($i+=2)

ch07 시각화 실행 →
exam07-05.php

PHP do-while 반복문 1~100 자연수의 합 계산 시각화

본문을 먼저 1회 무조건 실행(do { ... }) ➔ 마지막에 조건 검사(while ($i <= 100))하는 사후 검사 루프

ch07 시각화 실행 →
exam07-06.php

PHP break문 무한 루프 비상 탈출 시각화

while (true) 무한 루프 상태에서 if ($i == 10) break; 조건을 만나 즉시 탈출

ch07 시각화 실행 →
exam07-07.php

PHP continue문 건너뛰기 실행 시각화

if ($i % 2 == 0) continue;: 짝수일 때는 하위 출력을 건너뛰고 곧바로 $i++로 점프

ch07 시각화 실행 →
exam07-08.php

PHP while문 continue 증감식 누락 무한 루프 시각화

continue가 증감식($i++)보다 앞에 있어 $i가 영원히 1에 갇혀 무한 반복되는 함정

ch07 시각화 실행 →
exam07-09.php

PHP while문 continue 정상 해결 시각화

continue 호출 직전에 미리 $i++를 수행하여 무한 루프 없이 홀수를 안전하게 건너뜁니다.

ch07 시각화 실행 →
exam07-10.php

PHP 중첩 for문 (구구단 표 생성) 시각화

외부 루프($i)는 행(줄바꿈), 내부 루프($j)는 열(각 단)을 순회하며 HTML 테이블을 구성합니다.

ch07 시각화 실행 →
exam07-11.php

PHP 배열 순회 (for vs foreach) 시각화

인덱스(스칼라) 배열의 for 문과 키-값(연관) 배열의 foreach 문 차이점 비교

ch07 시각화 실행 →
ch08

함수와 스코프 (Functions)

함수 정의와 호출, return 반환값, 재귀 함수(Call Stack), 지역/전역 스코프, global 키워드, 값 호출 vs 참조 호출(&)

13개 예제
exam08-01.php

함수 정의와 호출 (매개변수 전달 및 내부 echo) 시각화

add($a, $b) 함수의 호출 흐름, 매개변수 바인딩 및 함수 내부 직접 출력

ch08 시각화 실행 →
exam08-02.php

함수 반환값(return)과 수식 내 함수 호출 시각화

return 문을 통해 계산 결과를 호출자에게 반환하고, 수식(add() + 1000)에서 활용

ch08 시각화 실행 →
exam08-03.php

반복문을 포함한 함수 print_star() 시각화

for 루프를 통해 n개의 별(*) 문자열을 조립한 후 함수 내부에서 직접 출력

ch08 시각화 실행 →
exam08-04.php

별 문자열 반환 함수 stars() & 인라인 출력() 시각화

함수가 직접 출력하지 않고 return $star로 전달하여, 템플릿()에서 호출 및 렌더링

ch08 시각화 실행 →
exam08-05.php

자연수의 합 sum() 함수와 $_GET 연동 시각화

URL 파라미터($_GET['n'])로 전달된 n까지의 누적합(1+2+...+n) 계산

ch08 시각화 실행 →
exam08-06.php

반환값 없는 return 문을 이용한 함수 조기 탈출(Early Exit) 시각화

switch-case 문 내부에서 return; 을 실행하여 함수 전체를 즉시 종료

ch08 시각화 실행 →
exam08-07.php

재귀 함수(Recursive Function)를 이용한 합계 sum() 시각화

기저 조건($num == 1)과 재귀 단계($num + sum($num - 1))의 콜 스택 변화

ch08 시각화 실행 →
exam08-08.php

재귀적 문자열 연결 stars() 함수 시각화

'*' . stars($n - 1) 재귀 호출을 통해 n개의 별을 조립하여 반환

ch08 시각화 실행 →
exam08-09.php

변수 유효 범위(Variable Scope): 전역 변수 vs 지역 변수 시각화

함수 내부의 $a = 100 은 전역 변수 $a = 500 에 영향을 주지 않음

ch08 시각화 실행 →
exam08-10.php

global 키워드를 통한 전역 변수 접근 및 수정 시각화

global $a 선언으로 함수 내부에서 전역 $a를 직접 참조하여 500 -> 100으로 영구 변경

ch08 시각화 실행 →
exam08-11.php

값에 의한 호출 (Call by Value) swap() 시각화

인수의 복사본이 매개변수에 전달되므로, 함수 내부의 교환이 외부 변수($num1, $num2)에 영향 없음

ch08 시각화 실행 →
exam08-12.php

참조에 의한 호출 (Call by Reference) swap() 시각화

매개변수 앞의 & 기호(&$a, &$b)로 원본 변수의 메모리 주소를 직접 공유하여 swap 성공

ch08 시각화 실행 →
exam08-13.php

참조 매개변수(&$num)를 통한 결과 직접 갱신 시각화

return 문 없이, 참조로 전달받은 변수 자체($num = $sum)를 직접 수정하여 결과 반환

ch08 시각화 실행 →
ch09

객체 지향 프로그래밍 (OOP)

클래스/인스턴스, 상속(extends), 생성자/소멸자 생명주기, 접근 제어자(public/protected/private), static 멤버, final 키워드

11개 예제
exam09-01.php

클래스 정의와 인스턴스(객체) 생성 ($this->) 시각화

class SimpleClass 정의, 프로퍼티, 메소드, new 키워드 및 객체 접근 연산자(->)

ch09 시각화 실행 →
exam09-02.php

클래스 상속(extends)과 메소드 오버라이딩 시각화

부모 클래스 Foo와 자식 클래스 Bar extends Foo 간의 상속 및 printItem() 재정의

ch09 시각화 실행 →
exam09-03.php

생성자(__construct) 상속과 parent::__construct() 시각화

자식 클래스 생성자에서 부모 생성자를 명시적으로 호출하는 원리

ch09 시각화 실행 →
exam09-04.php

생성자(__construct)와 소멸자(__destruct) 생명주기 시각화

객체 생성 시 생성자 실행, 스크립트 종료 시(메모리 해제 시) 소멸자 자동 호출

ch09 시각화 실행 →
exam09-05.php

프로퍼티 접근 제어자 (public, protected, private) 시각화

외부 접근 가능 여부 및 내부 메소드($this)를 통한 은닉 프로퍼티 접근

ch09 시각화 실행 →
exam09-06.php

상속 관계에서의 protected vs private 접근성 시각화

자식 클래스는 부모의 protected는 접근 및 재정의 가능하나 private는 접근 불가

ch09 시각화 실행 →
exam09-07.php

메소드 접근 제어자 (myPublic, myProtected, myPrivate) 시각화

외부에서는 public 메소드만 호출 가능, protected/private는 내부 foo()를 통해서만 간접 호출

ch09 시각화 실행 →
exam09-08.php

자식 클래스에서의 부모 메소드 접근 권한 시각화

자식 클래스는 부모의 protected 메소드는 호출 가능하지만, private 메소드는 호출 불가

ch09 시각화 실행 →
exam09-09.php

정적 멤버(static ::) vs 인스턴스 멤버(->) 시각화

클래스 레벨의 Foo::$static 및 staticMethod()와 인스턴스 레벨 멤버 비교

ch09 시각화 실행 →
exam09-10.php

final 메소드 오버라이딩 금지 시각화

부모 클래스에서 final로 선언된 메소드는 자식 클래스에서 재정의(Overriding) 불가

ch09 시각화 실행 →
exam09-11.php

final 클래스 상속(extends) 금지 시각화

final로 선언된 클래스는 어떠한 하위 자식 클래스로도 상속될 수 없음

ch09 시각화 실행 →
ch10

쿠키와 세션 (State Management)

setcookie() 만료 시간 지정, $_COOKIE 읽기, 과거 시간 쿠키 삭제, session_start(), $_SESSION 관리, unset() 및 session_destroy()

8개 예제
exam10-01.php

setcookie() 함수를 통한 쿠키 설정과 만료시간 시각화

브라우저 세션 쿠키(0), 1분 유지 쿠키(time()+60), 특정 과거/미래 타임스탬프 쿠키의 생성 원리

ch10 시각화 실행 →
exam10-02.php

클라이언트가 전송한 $_COOKIE 슈퍼글로벌 배열 확인 시각화

브라우저 요청 헤더(Cookie:)로 넘어온 쿠키값들을 PHP에서 읽어 화면에 출력

ch10 시각화 실행 →
exam10-03.php

과거 만료 시간(time() - 3600)을 이용한 쿠키 삭제 시각화

값을 null로 비우고 유효기간을 과거로 설정하여 브라우저 저장소에서 즉시 제거 유도

ch10 시각화 실행 →
exam10-04.php

session_start()와 $_SESSION 변수 등록 시각화

고유 세션 ID 생성, 서버 세션 파일 할당 및 $_SESSION 슈퍼글로벌에 데이터 저장

ch10 시각화 실행 →
exam10-05.php

페이지 이동 후 $_SESSION 데이터 유지 확인 시각화

동일한 session_id()를 통해 이전 페이지(exam10-04)에서 저장된 세션 변수들을 복원

ch10 시각화 실행 →
exam10-06.php

unset($_SESSION['session1'])을 이용한 특정 세션 변수 삭제 시각화

전체 세션은 유지하면서 session1 변수만 선택적으로 제거하는 원리

ch10 시각화 실행 →
exam10-07.php

session_unset()을 통한 모든 세션 변수 일괄 초기화 시각화

세션 ID와 저장소 파일은 유지한 채, $_SESSION 내부의 모든 변수를 일괄 비우기

ch10 시각화 실행 →
exam10-08.php

session_destroy()를 통한 서버 세션 파일 완전 파기 시각화

서버 저장소에 기록된 세션 데이터를 영구 파기하여 로그아웃 처리

ch10 시각화 실행 →