다음 스 니펫에서 작업하고 있습니다. !== 0
두 번째 조건이 사용하지 않고 동일한 결과를 반환하는 동안 첫 번째 if 조건 내부에서 사용하는 요점은 무엇입니까 !== 0
?
나는 일부 온라인 튜토리얼을 따르고 있었고 대부분의 개발자가 사용하고 있음을 !== 0
알았지 만 실수로 적어도 사용하지 않고이 특정 예제에서 동일한 결과를 다시 얻고 있음을 발견했습니다.!== 0
<?php
$name1 = "Geeks";
$name2 = "geeks";
if (strcmp($name1, $name2) !== 0) {
echo 'Strings are not equal';
}
else {
echo 'Strings are equal';
}
if (strcmp($name1, $name2)) {
echo 'Strings are not equal';
}
else {
echo 'Strings are equal';
}
?>
"===" 및 "!==" 비교 연산자는 다음 두 가지를 주장합니다.
"strcmp 함수와 함께 !==를 사용하는 요점은 무엇입니까?"라는 질문에 대한 짧은 대답은 단순히 "좋은 습관입니다"입니다. 이것이 실제로 strcmp에 관한 유일한 이유이며 != 해당 기능과 관련하여 정확히 동일한 결과를 제공합니다.
긴 답변은 다음과 같습니다.
PHP는 전통적으로 느슨한 유형의 언어입니다. 즉, 데이터 유형은 그다지 중요하지 않았고 PHP는 자동으로 유형을 암시적으로 캐스팅했습니다. 기본적으로 여전히 이 작업을 수행합니다(최근 몇 년 동안 상황을 개선하기 위해 많은 항목이 추가되었지만). 예를 들어, 문자열 "1"을 정수 1에 추가하면 PHP는 문자열을 자동으로 정수로 변환하고 정수 값 2를 반환합니다. 강력한 형식의 언어는 그렇게 하려고 하면 오류를 반환합니다. 또 다른 예는 PHP가 0을 부울 false로 변환하고 0이 아닌 다른 값을 부울 true로 변환한다는 것입니다.
PHP의 내장 기능 중 일부에 문제를 일으키는 두 번째 예입니다. 예를 들어 strpos() 함수. strpos에 대한 문서 페이지를 확인하면 "이 함수는 부울 FALSE를 반환할 수 있지만 FALSE로 평가되는 부울이 아닌 값도 반환할 수 있습니다"라는 "반환 값" 섹션에 큰 "경고"가 표시됩니다. 이러한 이유로 "===" 연산자를 사용하여 예상한 정확한 값과 유형을 얻고 있는지 확인하는 것이 좋습니다. 따라서 "=== 0"은 입력의 시작 부분에서 문자열이 발견되었음을 의미하고 "=== false"는 문자열을 찾을 수 없음을 의미합니다. "== false"를 사용했다면
따라서 개발자는 "===" 및 "!=="를 사용하여 같음 및 유형을 테스트하는 습관을 갖게 되었습니다. 좋은 습관입니다.
strcmp는 항상 정수를 반환하고 항상 정수와 비교하므로 암시적 캐스팅이 없으므로 유형과 동등성을 비교할 필요가 없습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다