PHP의 충돌하는 연산자: 더하기와 연결
PHP에서는 더하기와 연결 연산을 결합하려고 할 때 흥미로운 현상이 발생합니다. 예를 사용하여 이 이상한 동작을 살펴보겠습니다.
<code class="php">$a = 1; $b = 2; echo "sum: " . $a + $b; echo "sum: " . ($a + $b);</code>
아마도 두 번째 줄은 "sum: 3"을 인쇄합니다. 그러나 첫 번째 줄에 예기치 않게 "sum: 2" 대신 "2"가 표시됩니다. 왜 이런 일이 발생합니까?
우선순위가 같은 왼쪽 결합 연산자
핵심은 PHP의 연산자 우선순위와 결합성에 있습니다. 더하기( ) 및 연결(.) 연산자는 모두 동일한 우선순위를 공유합니다. 결과적으로 왼쪽에서 오른쪽으로 평가됩니다.
코드의 첫 번째 줄에서는 연결(.) 연산자가 먼저 옵니다.
<code class="php">"sum: " . $a + $b</code>
이 결과는 $b에 추가됩니다. . 따라서 우리가 가진 것은 다음과 같습니다.
<code class="php">echo "sum: 1" + 2;</code>
이것은 숫자 컨텍스트이므로 "sum: 1"은 정수로 변환됩니다. 그러면 0 2가 남고 결과는 2가 됩니다.
두 번째 줄에 괄호가 도입되면 더하기 연산자가 우선 적용됩니다. 먼저 괄호 안의 표현식을 평가하여 3을 얻은 다음 "sum:"과 연결하여 올바른 출력을 생성합니다: "sum: 3."
PHP 연산자 문제 문서화
이 독특한 동작은 연결 및 산술 연산자에 대한 PHP 문서에 명시적으로 명시되어 있으며, 동일한 우선순위의 연산자를 다룰 때 연관성의 중요성을 강조합니다. 코드에서 잠재적인 혼란을 피하기 위해서는 PHP 개발자가 이러한 미묘한 차이를 인식하는 것이 중요합니다.
위 내용은 왜 \'sum: \' 입니까? $a $b PHP에서 출력 2?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!