삼항 연산자와 문자열 연결이 원하지 않는 결과를 생성하는 이유는 무엇입니까?
삼항 연산자 및 문자열 연결 동작
프로그래밍에서 삼항 연산자(?)는 조건을 평가하고 값을 할당하는 간결한 방법을 제공합니다. 그러나 문자열 연결과 관련된 특정 미묘한 차이로 인해 예기치 않은 동작이 발생할 수 있습니다.
다음 코드 조각을 고려하세요.
<code class="php">$description = 'Paper: ' . ($paperType == 'bond') ? 'Bond' : 'Other';</code>
여기서 목표는 값에 따라 다른 설명을 할당하는 것입니다. $paperType. $paperType이 "bond"와 같은 경우 $description은 "Paper: Bond"여야 합니다. 그렇지 않으면 "종이:기타"여야 합니다.
그러나 실제 결과는 의도한 것과 다릅니다. "Paper:" 접두사를 추가하는 대신 "Bond" 또는 "Other"만 반환합니다.
이런 일이 발생하는 이유를 이해하기 위해 코드를 분석해 보겠습니다.
<code class="php">($paperType == 'bond') ? 'Bond' : 'Other'</code>
이 표현식 $paperType == 'bond' 조건을 평가합니다. true인 경우 'Bond'를 반환합니다. false인 경우 'Other'를 반환합니다.
원래 코드에서 이 표현식은 'Paper:' 문자열에 직접 연결됩니다.
<code class="php">'Paper: ' . (condition ? 'Bond' : 'Other')</code>
문제는 'Paper' 문자열로 인해 발생합니다. : '는 조건 자체가 아닌 삼항 표현식의 결과에 연결됩니다. 따라서 $paperType이 'bond'와 같을 경우 결과는 'Bond'이며, 이는 빈 문자열(후행 콜론으로 인해)과 연결되어 'Bond'를 생성합니다.
의도한 동작을 달성하려면 문자열 연결은 괄호로 묶어야 합니다.
<code class="php">$description = 'Paper: ' . (($paperType == 'bond') ? 'Bond' : 'Other');</code>
이렇게 하면 문자열 'Paper:'가 평가된 삼항 표현식에 연결되어 $paperType이 '인 경우 'Paper: Bond'와 같은 올바른 값이 생성됩니다. 본드', 그렇지 않으면 '종이:기타'로 표시됩니다.
위 내용은 삼항 연산자와 문자열 연결이 원하지 않는 결과를 생성하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











Laravel Back End : Part 2, React가있는 React 앱 구축

PHP의 컬 : REST API에서 PHP Curl Extension 사용 방법
