>백엔드 개발 >PHP 튜토리얼 >왜 \'sum: \' 입니까? $a $b PHP에서 출력 2?

왜 \'sum: \' 입니까? $a $b PHP에서 출력 2?

Patricia Arquette
Patricia Arquette원래의
2024-10-30 01:58:02482검색

Why Does

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.