PHP와 strcmp 함수를 사용하는 적절한 방법

베세이니

다음 스 니펫에서 작업하고 있습니다. !== 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'; 
} 
?> 
SG-

"===" 및 "!==" 비교 연산자는 다음 두 가지를 주장합니다.

  1. 값은 동일하고
  2. 값이 동일한 유형입니다.

"strcmp 함수와 함께 !==를 사용하는 요점은 무엇입니까?"라는 질문에 대한 짧은 대답은 단순히 "좋은 습관입니다"입니다. 이것이 실제로 strcmp에 관한 유일한 이유이며 != 해당 기능과 관련하여 정확히 동일한 결과를 제공합니다.

긴 답변은 다음과 같습니다.

PHP는 전통적으로 느슨한 유형의 언어입니다. 즉, 데이터 유형은 그다지 중요하지 않았고 PHP는 자동으로 유형을 암시적으로 캐스팅했습니다. 기본적으로 여전히 이 작업을 수행합니다(최근 몇 년 동안 상황을 개선하기 위해 많은 항목이 추가되었지만). 예를 들어, 문자열 "1"을 정수 1에 추가하면 PHP는 문자열을 자동으로 정수로 변환하고 정수 값 2를 반환합니다. 강력한 형식의 언어는 그렇게 하려고 하면 오류를 반환합니다. 또 다른 예는 PHP가 0을 부울 false로 변환하고 0이 아닌 다른 값을 부울 true로 변환한다는 것입니다.

PHP의 내장 기능 중 일부에 문제를 일으키는 두 번째 예입니다. 예를 들어 strpos() 함수. strpos에 대한 문서 페이지를 확인하면 "이 함수는 부울 FALSE를 반환할 수 있지만 FALSE로 평가되는 부울이 아닌 값도 반환할 수 있습니다"라는 "반환 값" 섹션에 큰 "경고"가 표시됩니다. 이러한 이유로 "===" 연산자를 사용하여 예상한 정확한 값과 유형을 얻고 있는지 확인하는 것이 좋습니다. 따라서 "=== 0"은 입력의 시작 부분에서 문자열이 발견되었음을 의미하고 "=== false"는 문자열을 찾을 수 없음을 의미합니다. "== false"를 사용했다면

따라서 개발자는 "===" 및 "!=="를 사용하여 같음 및 유형을 테스트하는 습관을 갖게 되었습니다. 좋은 습관입니다.

strcmp는 항상 정수를 반환하고 항상 정수와 비교하므로 암시적 캐스팅이 없으므로 유형과 동등성을 비교할 필요가 없습니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

strcmp 스타일 함수와 함께 우주선 <=> 연산자를 사용하는 방법은 무엇입니까?

반환 또는 적절한 대체 방법 내부에 PHP 함수를 포함

함수 이름과 매개 변수를 변수로 사용하여 적절한 함수를 호출하는 방법은 무엇입니까? PHP

불순한 함수와 함께 atomicModifyIORef를 사용하는 방법?

PHP를 사용하여 적절한 배열 형식을 만드는 방법

Flow와 함께 React Memo를 사용하는 적절한 방법은 무엇입니까?

PHP : 변수를 전달하는 적절한 방법

.cmake 파일의 소스와 함께 변수를 CMakeList.txt에 포함하는 적절한 방법

PHP : 익명 함수와 함께 usort를 사용하는 방법?

Codeception에서 수락 테스트와 함께 조명기를 사용하는 적절한 방법은 무엇입니까?

소유자와 함께 어레이를 할당하는 적절한 방법

strcmp ()가 적절한 출력을 표시하지 않음 (PHP)

PHP를 사용하여 적절한 형식으로 텍스트 파일의 내용을 인쇄하는 방법

loopback.js를 사용하여 경로와 API 인증을 결합하는 적절한 방법

동일한 함수에서 push()와 함께 filter()를 사용하는 방법

일반 함수에서 적절한 유형의 함수를 사용하는 방법은 무엇입니까?

PHP에서 적절한 시간대를 반환하는 방법

PHP 클래스를 "그룹화"하는 적절한 방법

동적 변수를 사용하여 where 절에 대한 gorm 함수를 작성하는 방법

HTML에 PHP 변수를 포함하는 적절한 방법은 무엇입니까?

Try와 Option을 함께 사용하는 Scala 적절한 사용

git으로 함수와 docblock을 제거 할 때 적절한 패치를 만드는 방법

파이썬에서 ** kwargs를 사용하는 적절한 방법

React hooks + WebSockets를 사용하는 적절한 방법

PHP를 사용하여 적절한 형식으로 SMS를 보내는 방법은 무엇입니까?

sf 객체와 함께 group_by () %> % summary () %> % mutate ()를 사용하는 적절한 절차

비교를 위해 if 문에서 strcmp를 사용하는 방법

TypeScript : Object.entries를 사용하여이 함수에 적절한 타이핑을 추가하는 방법

ContentResolver와 함께 RecyclerView를 사용하여 전화의 모든 미디어를 검색하는 적절한 최신 방법은 무엇입니까?

TOP 리스트

  1. 1

    Ionic 2 로더가 적시에 표시되지 않음

  2. 2

    JSoup javax.net.ssl.SSLHandshakeException : <url>과 일치하는 주체 대체 DNS 이름이 없습니다.

  3. 3

    std :: regex의 일관성없는 동작

  4. 4

    Xcode10 유효성 검사 : 이미지에 투명성이 없지만 여전히 수락되지 않습니까?

  5. 5

    java.lang.UnsatisfiedLinkError : 지정된 모듈을 찾을 수 없습니다

  6. 6

    rclone으로 원격 디렉토리의 모든 파일을 삭제하는 방법은 무엇입니까?

  7. 7

    상황에 맞는 메뉴 색상

  8. 8

    SMTPException : 전송 연결에서 데이터를 읽을 수 없음 : net_io_connectionclosed

  9. 9

    정점 셰이더에서 카메라에서 개체까지의 XY 거리

  10. 10

    Windows cmd를 통해 Anaconda 환경에서 Python 스크립트 실행

  11. 11

    다음 컨트롤이 추가되었지만 사용할 수 없습니다.

  12. 12

    C #에서 'System.DBNull'형식의 개체를 'System.String'형식으로 캐스팅 할 수 없습니다.

  13. 13

    JNDI를 사용하여 Spring Boot에서 다중 데이터 소스 구성

  14. 14

    Cassandra에서 버전이 지정된 계층의 효율적인 모델링

  15. 15

    복사 / 붙여 넣기 비활성화

  16. 16

    Android Kotlin은 다른 활동에서 함수를 호출합니다.

  17. 17

    Google Play Console에서 '예기치 않은 오류가 발생했습니다. 나중에 다시 시도해주세요. (7100000)'오류를 수정하는 방법은 무엇입니까?

  18. 18

    SQL Server-현명한 데이터 문제 받기

  19. 19

    Seaborn에서 축 제목 숨기기

  20. 20

    ArrayBufferLike의 typescript 정의의 깊은 의미

  21. 21

    Kubernetes Horizontal Pod Autoscaler (HPA) 테스트

뜨겁다태그

보관