PHP에서 플래그 사용하기
지금부터 플래그를 사용하는 방법을 배워보겠습니다.
플래그는 true와 false 두 가지 값만 가질 수 있는 특별한 변수입니다.
플래그를 사용하면 특정 것이 존재하지 않는지 확인하는 문제를 해결할 수 있습니다:
예를 들어, 배열에 특정 값을 가진 요소가 없는지 확인할 수 있습니다. 시작해 보겠습니다.
다음 문제를 해결해 봅시다: 숫자 배열이 주어졌을 때, 값이 3인 요소가 있는지 확인하세요.
있으면 '+++'를 출력하고, 없으면 '---'를 출력하세요.
먼저 '+++'를 출력해 보겠습니다.
배열의 모든 요소를 반복하면서 현재 요소가 값 3과 같은지 if문으로 확인합니다.
같으면 '+++'를 출력합니다:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++';
}
}
?>
그러나 우리의 해결책은 완벽하지 않습니다: 배열에 값이 3인 요소가 하나가 아니라 여러 개 있다면,
'+++'가 여러 번 출력될 것입니다. 배열을 수정하여(값이 3인 요소를 두 개 만들고) 이를 확인해 보겠습니다:
<?php
$arr = [1, 2, 3, 4, 3, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++'; // 여러 번 출력됨
}
}
?>
문제를 수정해 보겠습니다: 요소를 찾으면 break를 사용하여 루프를 종료합니다:
<?php
$arr = [1, 2, 3, 4, 3, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++';
break; // 루프 종료
}
}
?>
이제 배열에 값이 3인 요소가 전혀 없을 때 '---'를 출력하도록 해 보겠습니다.
흔히 하는 오해는 if문에 else를 추가하는 것입니다. 이렇게 하면 '---'가
3이 아닌 모든 요소에 대해 출력됩니다:
<?php
$arr = [1, 2, 3, 4, 5];
foreach ($arr as $elem) {
if ($elem === 3) {
echo '+++'; // 요소 3에서 출력됨
} else {
echo '---'; // 요소 1, 2, 4, 5에서 출력됨
}
}
?>
결론적으로, else를 추가하는 생각은 좋지 않고 작동하지 않습니다.
이러한 유형의 문제(이런 문제는 꽤 자주 접하게 됩니다)를 해결하기 위해 소위 플래그를 사용합니다.
위에서 언급한 것처럼, 플래그는 true 또는 false 두 가지 값만 가질 수 있는 변수입니다.
그럼 flag라는 변수를 만들어 보겠습니다: 이 변수가 true이면 배열에 3 요소가 있다는 뜻이고,
false이면 그런 요소가 없다는 뜻입니다.
먼저 flag 변수를 false로 설정합니다. 즉, 배열에 3 요소가 없다고 가정하는 것입니다:
$arr = [1, 2, 3, 4, 5];
$flag = false; // 배열에 요소 3이 없다고 가정
그런 다음 이전에 했던 것처럼 if문과 함께 루프를 실행합니다.
루프가 배열에 요소 3이 있음을 감지하면, flag 변수를 true로 설정하고
break를 사용하여 루프를 종료합니다:
<?php
$arr = [1, 2, 3, 4, 5];
$flag = false; // 배열에 요소 3이 없다고 가정
foreach ($arr as $elem) {
if ($elem === 3) {
$flag = true; // 요소가 있음 - $flag 변수 재정의
break; // 루프 종료
}
}
?>
배열에 3가 있는지 없는지에 대한 답은 루프가 끝난 후에만 줄 수 있습니다.
그리고 우리는 이미 그 답을 가지고 있습니다: 루프 후에 flag 변수는
false로 남아 있거나, 루프가 배열에서 3를 발견했다면 값이 true로 변경되었을 것입니다:
<?php
$arr = [1, 2, 3, 4, 5];
$flag = false;
foreach ($arr as $elem) {
if ($elem === 3) {
$flag = true;
break;
}
}
// 여기서 $flag 변수는 true 또는 false입니다.
?>
이제 루프 후에 flag 변수를 확인하고 '+++' 또는 '---'를 화면에 출력하는 if문을 만들 수 있습니다:
<?php
$arr = [1, 2, 3, 4, 5];
$flag = false;
foreach ($arr as $elem) {
if ($elem === 3) {
$flag = true;
break;
}
}
if ($flag === true) {
echo '+++';
} else {
echo '---';
}
?>
다음 배열이 주어졌습니다:
<?php
$arr = ['a', 'b', 'c', 'd', 'e'];
?>
이 배열에 'c' 요소가 있는지 확인하세요.
있으면 '+++'를 출력하고, 없으면 '---'를 출력하세요.
주어진 숫자가 소수인지 아닌지 확인하는 코드를 작성하세요. 소수는 1과 자기 자신으로만 나누어지고, 다른 숫자로는 나누어지지 않는 숫자입니다.