2011-09-19 4 views
0

이 코드를 실행하면 :PHP - 나는 (0 == 'undefined') 사실에 대해, 왜?

if (0=='undefined') echo 'true'; else echo 'false'; 

이 0 문자열 '정의되지 않은'를 동일 INT 의미하는 '진정한'얻을.

왜 그럴까요? 나는 무엇을 여기에서 놓치고 있냐?

+2

또 다른 "쉬운 rep"질문. Stackoverflow의 추악한 인터페이스는 이미 연결되는 종류의 십억을 찾지 않고 다른 대답을 쓰는 것을 더 쉽게 만듭니다. 그리고 Stackoverflow 못생긴 담당자 시스템은 정확한 새로운 복제본으로 질문을 마무리하기보다 새로운 새로운 대답을 작성하는 것이 더 바람직합니다. –

답변

6

This table0과 을 비교할 때 둘 다 먼저 숫자로 변환됩니다. 그리고 this section"undefined"이 수 0로 변환 말한다 : 문자열이 유효한 숫자 데이터로 시작

경우,이 사용 된 값 될 것입니다. 그렇지 않으면 값은 0입니다.

따라서 PHP를 처음 사용하는 사람이 다소 놀랍다면 비교 결과가 예상됩니다.

두 피연산자가 같은 유형이 아니기 때문에 비교 결과가 false 인 경우 PHP는 정확히 identical operator===을 제공합니다.

+0

+1 - 문자열의 값이 정수로 변환 될 수있는 것을 포함하지 않는 한 중요하지 않습니다. –

+2

추가 : 타입을 실제로 고려하기 위해'==='를 사용할 수 있지만'0 === '0''이 false를 반환한다는 것을 알아야합니다. – Nanne

+0

@ Pekka : 우리는 아마 동시에 입력했습니다 :) – Jon