조건문의 함수실행 여부 if ( 0 && ... )

by 조쉬 posted Mar 26, 2021
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

우선 밝혀두자면 필자의 환경은 PHP 5.1.6 이다.
이는 혹시라도 필자의 환경과 다를경우 이렇게되지 않을지도 몰라서 적어놓는 바이다.

그럼 본론으로 들어가서 아래의 소스를 보자

echo $test_text = "<br>hi~hello";
if( 0 && $test_text = substr($test_text, 4, 3) ) echo "hi~"; 
echo "$test_text <br>";
 
hi~hello
hi~hello 

if문에 0이들어갔기 때문에 if문에서 쓰인 echo는 실행되지 않는다.
하지만 그와 더불어서 if문에서 실행되었어야 하는 $test_text = substr($test_text, 4, 3) 부분 또한 실행이 되지 않아서 처음 집어넣어놓은 문자열이 출력된다.

그렇다면 위의 if문에서 0대신 1을 집어넣으면 어떻게 될까?

 
hi~hellohi~hi~ 

위와 같이 if문에서 $test_text = substr($test_text, 4, 3) 부분이 제대로 실행된다.

위의 소스는 0 다음에 && 이라는 이미 거짓일수밖에 없는 조건이 와버렸기 때문에 다음의 실행결과인 함수가 실행조차 되지 않아 버리는것이다.

마찬가지로 위의 식이 if( 1 || $test_text = substr($test_text, 4, 3) ) 처럼 1 다음에 ||이 오는 반드시 참일수밖에 없는 조건이 온다면 이때도 다음의 문장은 실행되지 않는다.