반응형
3차 연산자 및 문자열 연결 특이점?
안녕하세요. 이 코드가 (적어도 저에게는) 잘못된 결과를 산출하는 이유를 알고 싶습니다.
음, 아마 제가 잘못한 것 같아요.
$description = 'Paper: ' . ($paperType == 'bond') ? 'Bond' : 'Other';
만약 종이가유형은 '본드'이고 설명은 '용지:본드'이며, 종이인 경우유형이 '본드'와 동일하지 않으며 설명은 '용지:'기타'
하지만 제가 이 코드를 실행하면 'Bond' 또는 'Other'라는 결과가 나와 'Paper:'라는 문자열이 어디로 갔는지 궁금하게 됩니다.
$description = 'Paper: ' . ($paperType == 'bond' ? 'Bond' : 'Other');
문자열이 올바른 순서로 문자열에 연결되도록 괄호를 추가해 보십시오.
연산자 우선 순위와 관련이 있습니다.다음을 수행해야 합니다.
$description = 'Paper: ' . (($paperType == 'bond') ? 'Bond' : 'Other');
모두가 해결책을 제시했다고 생각합니다, 예상치 못한 결과가 나온 이유에 기여하고 싶습니다.
먼저 원점과 연산자 평가 방법(왼쪽, 오른쪽, 연관성 등)을 확인할 수 있습니다.
http://php.net/manual/fa/language.operators.precedence.php
이제 우리가 당신의 문장을 분석해보면요.
$paperType = 'bond';
$description = 'Paper:'. ($paperType == 'bond') ? 'Bond': 'Other';
- 표를 검토한 결과 괄호가 먼저 평가되고, 그 다음에 '.'(연결)이 평가되며, 마지막에 3진수 연산자 '?'가 평가되므로 이를 다음과 같이 연결할 수 있습니다.
// evaluate the parenthesis ... ($paperType == 'bond')
$description = ('Paper:'. 1)? 'Bond': 'Other';
//result
$description = 'Paper: 1'? 'Bond': 'Other';
- 이제 3진 연산자가 있고 문자열이 "참"으로 평가된다는 것을 알고 있습니다.
php 문서 부울로 변환할 때 다음 값은 FALSE로 간주됩니다.
빈 문자열 및 "0" 문자열
$description = true? 'Bond': 'Other';
- 마침내.
$description = 'bond';
나는 내가 그 질문을 명확히 했길 바랍니다.인사말.
언급URL : https://stackoverflow.com/questions/1317383/ternary-operator-and-string-concatenation-quirk
반응형
'programing' 카테고리의 다른 글
완료 버튼으로 UI Picker View를 만드는 방법은 무엇입니까? (0) | 2023.08.04 |
---|---|
테이블스페이스란 무엇이며 왜 그것이 사용됩니까? (0) | 2023.08.04 |
쿼리 실행에서 테이블 열기 상태는 정확히 무엇입니까? (0) | 2023.08.04 |
PL/SQL Developer의 실행 절차에 문제가 있습니다. (0) | 2023.08.04 |
포크를 호출할 때 스레드가 복사됩니까? (0) | 2023.08.04 |