다음 코드의 출력 결과는?

과목: PHP

문제 번호: 2719

hard
다음 코드의 출력 결과는?
<?php
$x = 5;

function test1() {
    $x = 10;
}

function test2() {
    global $x;
    $x = 15;
}

test1();
echo $x . " ";
test2();
echo $x;
?>
A. 5 5
B. 10 15
C. 5 15
D. 10 10

정답: C



global 키워드 없이는 전역 변수를 수정할 수 없고, global을 사용하면 전역 변수를 직접 수정할 수 있습니다.

실행 과정 분석:

1. $x = 5 → 전역 변수 x = 5

2. test1() 호출:
$x = 10 → 지역 변수 생성
⦁ 전역 변수는 영향 없음
⦁ 함수 종료 후 지역 변수 소멸

3. echo $x → 전역 변수 출력 = 5

4. test2() 호출:
global $x → 전역 변수 참조
$x = 15 → 전역 변수 수정

5. echo $x → 전역 변수 출력 = 15

최종 출력: "5 15"

핵심 개념:
⦁ global 없음 → 새로운 지역 변수
⦁ global 있음 → 전역 변수 참조/수정
⦁ 함수는 기본적으로 격리된 범위

실무 팁:
// 명확한 방법
function updateGlobal() {
    $GLOBALS['x'] = 20;  // 명시적
}

💡 학습 팁

이 문제를 포함한 PHP 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.