표현식은 PHP의 가장 중요한 초석입니다. PHP에서는 작성하는 거의 모든 것이 표현식입니다. 표현식을 정의하는 간단하지만 가장 정확한 방법은 "값이 있는 모든 것"입니다.
가장 기본적인 표현 형태는 상수와 변수입니다. "$a = 5"를 입력하면 값 "5"가 변수 $a에 할당됩니다. "5"는 당연히 5의 값을 갖습니다. 즉 "5"는 값 5를 갖는 표현식입니다(여기서 "5"는 정수 상수입니다).
할당 후 $a의 값은 5일 것으로 예상되므로 $b = $a라고 쓰면 $b = 5와 같을 것으로 예상됩니다. 즉, $a도 값이 5인 표현식입니다. 모든 것이 제대로 작동한다면, 바로 이런 일이 일어날 것입니다.
약간 더 복잡한 표현의 예로는 함수가 있습니다. 예를 들어, 다음 함수를 고려해보세요:
function foo ()
{
return 5;
}
?>
당신이 함수의 개념에 익숙하다고 가정할 때, $c = foo()를 입력하는 것은 본질적으로 $c = 5를 작성하는 것과 같으며, 이는 맞습니다. 함수도 표현식이며 표현식의 값은 반환 값입니다. foo()는 5를 반환하므로 "foo()" 표현식도 5로 평가됩니다. 종종 함수는 정적 값을 반환하는 것이 아니라 무언가를 계산할 수도 있습니다.
물론 PHP의 값은 정수가 아닌 경우가 많습니다. PHP는 네 가지 유형의 스칼라 값을 지원합니다(스칼라 값은 배열과 같은 더 작은 단위로 분할할 수 없음): 정수, 부동 소수점, 문자열 및 부울(부울). PHP는 배열과 객체라는 두 가지 복합 유형도 지원합니다. 두 유형 모두 변수에 할당되거나 함수에서 반환될 수 있습니다.
PHP는 다른 언어와 마찬가지로 표현 경로를 따라 발전하지만 그 이상입니다. PHP는 거의 모든 것이 표현식이라는 점에서 표현식 지향 언어입니다. 방금 공부한 예인 "$a = 5"를 생각해 보세요. 분명히 여기에 관련된 두 가지 값이 있습니다. 정수 상수 "5"의 값과 역시 5로 업데이트되는 변수 $a의 값입니다. 그러나 사실은 추가적인 가치, 즉 부가가치 명세서 자체의 가치가 관련되어 있다는 것입니다. 할당문 자체는 할당된 값인 5로 평가됩니다. 사실상 이는 "$a = 5"가 무엇을 하든 5로 평가되는 표현식임을 의미합니다. 따라서 "$b = ($a = 5)"라고 쓰는 것은 "$a = 5; $b = 5"라고 쓰는 것과 같습니다(세미콜론은 문의 끝을 표시합니다). 할당 연산의 순서는 오른쪽에서 왼쪽이므로 "$b = $a = 5"라고 쓸 수도 있습니다.
표현 중심의 또 다른 좋은 예는 순방향 및 역방향 증가 및 감소입니다. PHP 및 대부분의 다른 언어 사용자는 변수++ 및 변수-- 기호에 익숙해야 합니다. 즉, 증가 및 감소 연산자입니다. PHP에는 C 언어와 마찬가지로 사전 증가와 사후 증가라는 두 가지 유형의 증가가 있습니다. 기본적으로 사전 증가와 사후 증가는 모두 변수의 값을 증가시키며 변수에 미치는 영향은 동일합니다. 다릅니다. 증분 표현식의 값입니다. "++$variable"로 작성된 사전 증가는 증가 후의 값을 찾습니다(PHP는 변수 값을 읽기 전에 변수의 값을 증가시키므로 "사전 증가"라고 합니다). "$variable++"로 작성된 사후 증가는 변수가 증가되기 전의 원래 값을 찾습니다(PHP는 변수의 값을 읽은 후 변수의 값을 증가시키므로 이를 "사후 증가"라고 합니다).
일반적으로 사용되는 표현식 유형은 비교 표현식입니다. 이러한 표현식은 FALSE 또는 TRUE로 평가됩니다. PHP는 >(보다 큼), >=(크거나 같음), ==(같음), !=(같지 않음), <=(보다 작거나 같음)을 지원합니다. 같음). PHP는 항등 연산자 ===(값과 유형이 동일함)와 비식별 연산자 !==(값이나 유형이 다름)도 지원합니다. 이러한 표현은 if문과 같은 조건부 판단문에서 자주 사용됩니다.
여기서 마지막으로 공부할 예제는 결합 산술 할당 표현입니다. 변수 $a에 1을 추가하려면 간단히 "$a++" 또는 "++$a"라고 쓰면 된다는 것을 이미 알고 있습니다. 하지만 변수에 1보다 큰 값(예: 3)을 추가하려면 어떻게 해야 할까요? "$a++"를 여러 번 쓸 수 있지만 이는 분명히 효율적이고 편안한 방법이 아닙니다. 보다 일반적인 접근 방식은 "$a = $a + 3"입니다. "$a + 3"은 $a에 3의 값을 더한 것과 동일하며 결과 값이 변수 $a에 재할당되므로 $a의 값이 3만큼 증가합니다. PHP와 C와 같은 다른 여러 언어에서는 위의 기능을 더 짧은 형식으로 수행할 수 있으므로 더 명확하고 빠르게 수행할 수 있습니다. $a의 현재 값에 3을 더하려면 "$a += 3"이라고 쓰면 됩니다. 여기서 의미하는 바는 "변수 $a 의 값에 3을 더하고 그 결과를 변수 $a 에 다시 할당합니다."입니다. 더 간단하고 명확할 뿐만 아니라 더 빠르게 실행할 수도 있습니다. "$a += 3"의 값은 일반 할당 연산의 값과 마찬가지로 할당 후의 값입니다. 3이 아니라 $a에 3을 더한 값입니다(이 값은 $a에 할당됩니다). 모든 이진 연산자는 "$a -= 5"(변수 $a 값에서 5 빼기), "$b *= 7"(변수 $b에 7 곱하기) 등과 같은 연산 할당 패턴을 사용할 수 있습니다. .
다른 언어에서 본 적이 없다면 이상하게 보일 수 있는 표현식, 즉 삼항 조건 연산자도 있습니다:
<?php $first ? $second : $third ?>
첫 번째 경우 하위 표현식의 값이 TRUE입니다. (0이 아님)이면 두 번째 하위 표현식이 평가되고 해당 값은 전체 조건식의 값이 됩니다. 그렇지 않으면 세 번째 하위 표현식이 평가되고 해당 값이 전체 표현식의 값이 됩니다.
다음 예는 사전 및 사후 증가와 표현식을 일반적으로 이해하는 데 도움이 됩니다.
<?php function double($i) { return $i*2; } $b = $a = 5; /* assign the value five into the variable $a and $b */ $c = $a++; /* post-increment, assign original value of $a (5) to $c */ $e = $d = ++$b; /* pre-increment, assign the incremented value of $b (6) to $d and $e */ /* at this point, both $d and $e are equal to 6 */ $f = double($d++); /* assign twice the value of $d before the increment, 2*6 = 12 to $f */ $g = double(++$e); /* assign twice the value of $e after the increment, 2*7 = 14 to $g */ $h = $g += 10; /* first, $g is incremented by 10 and ends with the value of 24. the value of the assignment (24) is then assigned into $h, and $h ends with the value of 24 as well. */ ?>
일부 표현식은 명령문으로 처리될 수 있습니다. 이때 문의 형태는 expr; 즉, 표현식이 세미콜론으로 끝난다. '$b = $a = 5;' 에서 '$a = 5'는 유효한 표현식이지만 그 자체로는 명령문이 아닙니다. 그리고 '$b = $a = 5;'는 유효한 진술입니다.
마지막으로 언급할 가치가 있는 것은 표현의 진리값입니다. 대부분 조건부 실행 및 루프에서 발생하는 많은 이벤트에서는 표현식의 특정 값에 관심이 없고 표현식 값이 TRUE 또는 FALSE인지 여부에만 관심이 있습니다. TRUE 및 FALSE(대소문자 독립적) 상수는 두 가지 부울 값이 가능합니다. 필요한 경우 표현식이 자동으로 부울 값으로 변환됩니다.