문제

안녕하세요 저는이 코드가 왜 (적어도 나에게) 잘못된 결과를 얻는 이유를 알고 싶습니다.

글쎄, 아마도 나는 여기에서 잘못에 빠졌다

$description = 'Paper: ' . ($paperType == 'bond') ? 'Bond' : 'Other';

Papterttype가 'Bond'와 같으면 설명은 '종이 : 본드'이고 PactorType가 'Bond'와 같지 않으면 설명은 '논문 : 기타'입니다.

그러나이 코드를 실행하면 결과는 설명이 '본드'또는 '기타'이며 문자열이 어디에 있는지 궁금해했습니다.

도움이 되었습니까?

해결책

$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';

1) 표를 검토하고 괄호가 먼저 평가 된 다음 '.' (연결)을 평가하고 결국 3 원 운영자 '?'는 다음과 같이 연관시킬 수 있습니다.

// evaluate the parenthesis ... ($ paperType == 'bond')
$ description = ('Paper:'. 1)? 'Bond': 'Other';
//result
$ description = 'Paper: 1'? 'Bond': 'Other';

2) 이제 우리는 3 원 운영자를 보유하고 있습니다. 문자열이 "true"로 평가된다는 것을 알고 있습니다.

// PHP 문서화 부울로 변환 할 때 다음 값은 허위로 간주됩니다.

... 빈 문자열 및 문자열 "0"

$ description = true? 'Bond': 'Other';

3) 마침내

$ description = 'bond';

나는 질문을 명확히했으면 좋겠다. 인사말.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top