논리 조건


선택 결정 조건 제어문의 if 조건 블록 소괄호 ( ) 하나로 조건 값에 따라 참(true)과 거짓(false)으로 구분하여 동작합니다. 만일 조건이 한 가지 조건이 아닌 두 가지 조건을 모두 처리해야 한다면 앞에서 배운 조건의 중첩 또는 else if문을 통해 코드가가 분기되어 복잡할 수 있습니다.

if문의 조건은 연산 기호 &&,   와 같은 논리 기호를 통해 여러 조건들을 연결하여 하나의 조건으로 묶어서 작성이 가능합니다. 이렇게 연결된 조건은 하나의 결과 값으로 처리되어 전체 연산 값에 대해서 참/거짓으로 판단하여 논리 값을 판별할 수 있습니다.


조건 결합 and : &&


논리 연산 기호 and 기호는 &&를 통해 두 가지 참 조건을 연결할 수 있습니다. AND는 디지털 논리 조건으로 입력되는 두 개의 입력 조건 모두가 참(true)인 경우에 결과도 참(true)을 출력합니다.

즉, 두 개의 값을 곱셈 형태로 연결하는 것과 같습니다. 두 개 조건 모두 참(true)을 확인할 때 사용할 수 있습니다.

&& 조건 연산 결합은 다음과 같은 문법으로 작성할 수 있습니다.

|문법|

if (조건A && 조건 B) {
	 동작 실행 코드;
} else {
	거짓일  동작 처리 ;
}

예제 파일 if-07.php

<?php
	$sex = "man";
	$age = 21;
	
	if ($sex == "man" && $age >= 20) {
		echo "20세 이상의 남성입니다.";
	} 
?>

결과

20세 이상의 남성입니다.

위 예제는 이중 조건처리를 하지 않고 두 가지 조건을 동시에 검사하여 성별과 성년을 모두 한 번에 조건을 검사할 수 있습니다. && 조건의 입력은 A, B 두 개 값보다 더 많이 연결하여 아래와 같이 작성할 수 도 있습니다.

if(조건A && 조건B && 조건C && 조건D )

필요한 만큼 연결하여 사용하면 됩니다.


조건 결합 or : ||


논리 연산 기호 or 기호는 ||를 통해 두 가지 조건을 연결하여 확인할 수 있습니다. 디지털 논리 조건 OR는 입력되는 두 개의 조건 중 하나만 참(true)인 경우 결과도 참(true)을 출력합니다.

즉, 두 개의 값을 덧셈 형태로 연결하는 것과 같습니다. 두 개 조건 중 하나만 참(true)을 확인할 때 사용할 수 있습니다.

  조건 연산 결합은 다음과 같은 문법으로 작성할 수 있습니다.

|문법|

if (조건A || 조건 B) {
	 동작 실행 코드;
} else {
	거짓일  동작 처리 ;
}

예제 파일 if-08.php

<?php
	$age = 17;
	
	if ($age >= 18 || $age <= 65) {
  		echo "18세 이상, 65세 이하의 경제 가능 나이 층입니다.";
	}
?>

결과

18세 이상, 65세 이하의 경제 가능 나이 층입니다.
위 예제는 이중 조건 처리를 하지 않고 두 가지 조건을 동시에 검사하여 나이의 범위를 정해 참과 거짓을 한 번에 구별할 수 있습니다.   조건의 입력은 A, B 두 개 값보다 더 많이 연결하여 다음과 같이 작성할 수 도 있습니다.
if(조건A || 조건B || 조건C || 조건D …)

필요한 만큼 연결하여 사용을 하면 됩니다.


조건 부정 not : !


조건 제어문의 문법 if는 조건이 참(true)이면 다음 실행문을 동작하고, 거짓이면 else 이후의 실행문이 동작합니다. 하지만, 논리표현 NOT의 ! 기호를 사용하여 조건 부정문을 통해 조건 결과의 참과 거짓을 뒤집어서 반대로 동작을 하게 만들 수 있습니다.

작성 문법

if ( !조건) {
 거짓일  동작 처리;
} else {
  동작 실행 코드;
}

예제 파일 if-09.php

<?php
	// $adult 미선언되어 있습니다. 
	// NELL => false 값
	if (!$adult) {
		// true 조건
		// false 조건이 부정으로 true로 변경됨
		echo "성년 판별 논리 값이 비어 있습니다.<br>";

		$age = 18;

		if($age >= 18){
			echo "성인입니다. <br>";	
		} else {
			echo "미성년입니다. <br>";
		}

	} else {
		// false 조건
		echo "성년 조건을 판별합니다. <br>";

		$adult = false;

		if($adult){
			echo "성인입니다. <br>";	
		} else {
			echo "미성년입니다. <br>";
		}

	}	

?>

결과

성년 판별 논리 값이 비어 있습니다.
성인입니다. 

즉, 논리표현 NOT은 참과 거짓을 바꾸는 의미를 가지고 있습니다.


조건 혼용


앞의 세 개의 논리표현 결합은 하나의 기호만 가지고 조건을 결합했습니다. 하지만 조건 결합은 서로 다른 논리 조건 &&||, !를 소괄호()를 통해 각각의 다른 논리 값을 결합할 수 있습니다.

(조건 A && 조건B) || 조건 C

위의 예는 조건 C가 참(true)이거나, 조건 A나 조건 B 모두 참(true)이어야 결과를 참(true)으로 출력합니다. 만일 서로 다른 논리표현으로 다수의 조건을 결합할 때는 이렇게 산술 연산 우선순위 기호로 사용하는 소괄호를 통해 ()를 결합이나 우선순위를 정할 수 있습니다.