Computer >> 컴퓨터 >  >> 프로그래밍 >> PHP

PHP goto 문 완벽 가이드: 사용법, 예제와 주의사항


개요

goto 문은 프로그램의 실행 흐름을 코드 내 특정 위치로 이동시키는 데 사용되는 제어문입니다. 이동할 위치는 사용자가 직접 정의한 레이블(label)로 지정합니다. 일반적으로 goto 문은 if, else 또는 switch 구문의 case처럼 조건 표현식의 일부로 스크립트에 포함되어 사용됩니다.

기본 문법

statement1;
statement2;
if (expression)
    goto label1;
statement3;
label1: statement4;

위 코드에서 statement2가 실행된 후, if 문의 표현식이 true이면 프로그램의 흐름은 label1로 이동하여 statement4를 실행합니다. 반대로 표현식이 false이면 statement3가 정상적으로 실행된 후 다음 코드로 진행됩니다.

예제: 짝수 판별하기

다음 예제에서는 사용자가 입력한 숫자가 짝수일 경우 지정된 레이블로 프로그램이 점프합니다.

<?php
$x=(int)readline("enter a number");
if ($x%2==0)
    goto abc;
echo "x is an odd number";
return;
abc:
echo "x is an even number";
?>

실행 결과

입력값이 짝수라면 아래와 같은 결과가 출력됩니다.

x is an even number

goto 문으로 반복문 만들기

goto 키워드 앞에 있는 레이블은 현재 문장보다 앞쪽에 위치할 수도 있고 뒤쪽에 위치할 수도 있습니다. 만약 goto 문이 참조하는 레이블이 더 앞선 문장을 가리킨다면, 그것은 하나의 반복문(loop)을 구성하게 됩니다.

다음 예제는 goto 문으로 만든 간단한 루프를 보여줍니다.

<?php
$x=0;
start:
$x++;
echo "x=$x\n";
if ($x<5)
    goto start;
?>

실행 결과

$x 값이 5보다 작은 동안 계속 start 레이블로 되돌아가며, 아래와 같은 결과가 출력됩니다.

x=1
x=2
x=3
x=4
x=5

주의사항: 반복문 중간으로의 점프 금지

goto 문을 사용하면 프로그램 제어를 이름이 지정된 임의의 위치로 점프시킬 수 있습니다. 하지만 반복문(for, while 등)이나 switch 문의 중간으로 점프하는 것은 허용되지 않습니다.

다음 예제처럼 반복문 내부에 있는 레이블로 점프하려고 하면 치명적인 오류(fatal error)가 발생합니다.

<?php
for ($x=1; $x<=5; $x++){
    if (x==3)
        goto inloop;
    for ($y=1;$y<=5; $y++){
        inloop:
        echo "x=$x y=$y\n";
    }
}
?>

실행 결과

반복문 안으로 점프하려 할 경우 PHP는 다음과 같은 오류 메시지를 출력합니다.

PHP Fatal error: 'goto' into loop or switch statement is disallowed in line 5

마무리

goto 문은 코드 흐름을 자유롭게 이동시킬 수 있는 강력한 기능이지만, 남용하면 코드의 가독성과 유지보수성이 크게 떨어질 수 있습니다. 실무에서는 가능한 한 함수 호출, break, continue 같은 구조화된 제어문을 우선적으로 사용하고, goto 문은 꼭 필요한 경우에만 신중하게 활용하는 것이 좋습니다.