우선 밝혀두자면 필자의 환경은 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 다음에 ||이 오는 반드시 참일수밖에 없는 조건이 온다면 이때도 다음의 문장은 실행되지 않는다.