2012-05-08 4 views
3

가능한 중복 :
php == vs === operator사용하기 === == 이상 ==, = PHP에서

내가 ===의 차이를 이해, !==== , != PHP에서하지만 나는 항상 ===!==을 선호하지만 실제로 이유는 없습니다. PHP.net의 문서에는 종종 일부 기본 제공 함수에 대한 반환 값을 확인하기 위해 ===을 사용해야한다는 '경고'가 있습니다. 그래서 제 질문은 왜 한 세트의 연산자를 다른 세트보다 사용해야합니까?

많은 감사 :).

+0

적절할 때 사용하십시오. 차이점을 이해한다면 그 질문은 무엇입니까? 가까운 모든 표를 사용했지만 이것은 건설적인 질문이 아닙니다. – kapa

+0

그런 종류의 질문을하기에 더 적합한 사이트가 있습니까? 프로그래머가 있습니다. 스택 교환? – ale

+2

'프로그래머 .SE'에 대한 FAQ에 익숙하지 않습니다. 귀하의 질문에 내 문제는'가능성이 높습니다 의견, 토론, 인수, 투표, 또는 확장 된 토론'을 요구합니다. 개인적이지 않은 일. '==='와'=='둘 다 그들의 위치를 ​​가지고 있기 때문에, 당신은 정말로 '다른 하나 위에 사용하기'** 일반적으로 ** 말할 수 없습니다. – kapa

답변

5

자동 유형 변환은 예상하지 못한 가양 성 및 거짓 네거티브로 이어질 수 있습니다 (예 : 나중에 코드를 유지해야하는 개발자가 예상하는 방식으로 변환하지 않는 경우). 유형 대화 규칙은 대개 복잡하고 언어마다 다르므로 이러한 혼란을 일으킬 수있는 범위가 충분히 있습니다.)

대화 형식이 필요하지 않는 한 항상 3 자 버전을 사용하십시오.

3

===!==은 두 피연산자가 같은 유형 인 경우에만 사용해야합니다.

그렇지 않으면 - ==!=를 사용 - 암시 적 캐스팅 우리는 당신이 실패했을 때 성공적인와 FALSE 0을 반환 할 수있는 기능을 사용하는 경우 중요

+4

@ThiefMaster : 나는 사랑한다 왜냐하면 PHP는 모든 타사 데이터 소스에서 문자열로 데이터를 가져 오기 때문에 그렇지 않으면 프로그래밍이 지속적인 주조가 될 것이기 때문입니다. 추신 : 나는 항상 변수의 유형을 알고 있으므로 내재 된 캐스트가 전혀 문제가되지 않습니다. – zerkms

+2

@ThiefMaster : 끔찍하지 않습니다. 당신은 너무 과장입니다 :-) PS : 나는'if ($ string)'을' if (strlen ($ string)> 0)'그것은 나를 위해 많은 의미가 있기 때문에. ** 어느 것이 ** 선택하겠습니까? – zerkms

+0

@Thief'false == 'false'는'false'입니다. '! 'false'=== true' 또한'false'입니다. – deceze

1

===!== PHP를 좋아하는이기 때문이다. PHP에서 0은 FALSE와 같기 때문에 함수가 실패한 것으로 결론 내릴 수 있습니다. SomeFunction을 가정

if(somefunction() == 0) { 
    // Do something 
} 

은 함수가 실패했을 때 리턴 코드가 FALSE 인 경우, 위의 코드 조각이 발생하게 성공적으로 종료하고, FALSE 0을 반환합니다. 응답이 정말 가장 일반적인 이유는 다음입니다 기능은 숫자/문자열을 반환하고, 오류에 false를 반환 할 수 있습니다 0

3

경우에만 트리거로

===를 사용하면, 그에서 당신을 방지 할 수 있습니다. 0이 유효한 결과이고 false가 오류를 나타내면 ===를 사용하여 구별합니다. 그러나 항상 ===를 사용하면 예기치 않은 동작이 발생할 수 있습니다. 예를 들어 null이 반환되고 유효하지 않은 값으로 간주되지만 형식 검사가 false 인 경우입니다. 따라서 데이터가 자신의 소스 코드/PHP 함수에서오고 있으며 유효하지 않은 값이 정확히 하나임을 알고 있다면 엄격한 검사를 사용하십시오. 대부분의 경우 ==는 안전한 선택입니다. 특히 외부 데이터를 처리하는 경우에는 제어 할 수 없습니다.

관련 문제