PHP 조건문에서 중괄호 생략의 문제점
PHP가 위와 같이 중괄호를 생략하는 축약 형태를 허용하긴 하지만, 일반적으로 그렇게 하는 것을 권장하지 않습니다. 이는 미묘한 오류가 발생하기 쉬운 환경을 만들기 때문입니다.
예를 들어, 다음과 같은 코드가 있다고 가정해 보겠습니다:
<?php
$test = 3;
if ($test > 0)
echo $test;
?>
이제 조건이 참일 때 두 번째 echo를 추가하기로 결정했다고 가정해 봅시다:
<?php
$test = 3;
if ($test > 0)
echo $test;
echo '+++';
?>
그러나, 중괄호 없이는 조건문 내부에 있는 것은 첫 번째 출력문뿐입니다. 즉, 첫 번째 출력은 조건이 참일 때만 실행되고, 두 번째 출력은 항상 실행됩니다.
사실상 우리의 코드는 다음과 동일합니다:
<?php
$test = 3;
if ($test > 0) {
echo $test;
}
echo '+++'; // 이 줄은 조건문 바깥에 위치하게 됨
?>
하지만 우리가 원한 코드는 이런 형태였을 것입니다:
<?php
$test = 3;
if ($test > 0) {
echo $test;
echo '+++'; // 이 줄은 조건문 내부에 있음
}
?>
바로 이런 종류의 오류에 빠지지 않기 위해 항상 중괄호를 사용하는 것이 권장됩니다.
코드를 실행하지 말고, 화면에 무엇이 출력될지 판단하세요:
<?php
$num = 5;
if ($num === 5)
echo $num;
echo '+++';
?>
코드를 실행하지 말고, 화면에 무엇이 출력될지 판단하세요:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '+++';
?>
코드를 실행하지 말고, 화면에 무엇이 출력될지 판단하세요:
<?php
$num = 0;
if ($num === 5)
echo $num;
echo '---';
echo '+++';
?>