> 백엔드 개발 > PHP 튜토리얼 > Note 010 PHP의 == 비교 연산자에 대한 참고 사항

Note 010 PHP의 == 비교 연산자에 대한 참고 사항

黄舟
풀어 주다: 2023-03-04 09:06:01
원래의
1112명이 탐색했습니다.

최근 비교 작업을 수행할 때 몇 가지 문제가 발생했습니다. 보통 세부 사항을 무시하지만 이번에는 문제가 발생할 것이라고 예상하지 못했습니다.

PHP의 == 비교 연산자는 두 데이터의 값이 같으면 true를 반환하고, 그렇지 않으면 false를 반환한다는 의미입니다. 여기서 말하는 것은 값이 동일하면 결과가 true라는 것입니다. 즉, 여기서는 값의 유형을 비교하지 않습니다. 예: 12 == '12' 결과는 true입니다.

PHP 변수의 약한 유형으로 인해 변수의 유형을 의도적으로 고려하지 않는 경우가 많으며, 이번에 발생한 문제는 변수 유형으로 인해 발생합니다.

array_search 함수를 사용할 때 문제가 발생합니다.

array_search는 해당 값이 존재하는 경우 해당 값에 해당하는 인덱스를 반환합니다. 이 값이 여러 번 발생하면 첫 번째로 검색된 인덱스가 반환됩니다. 값이 존재하지 않으면 false를 반환합니다.

다음과 유사한 환경에서 문제가 발생했습니다.

<?php$testA = array(   
 &#39;a&#39; => &#39;123&#39;,   
  &#39;b&#39; => &#39;iphp8.com&#39;,   
   &#39;c&#39; => &#39;014778&#39;,   
   &#39;d&#39; => &#39;14778&#39;,
);
   echo array_search(&#39;14778&#39;, $testA);
로그인 후 복사

이때 얻은 결과는 c입니다.

array_search는 기본적으로 값의 종류를 비교하지 않기 때문에, 즉 == 비교를 합니다. 순수 숫자의 경우 문자열도 비교를 위해 숫자로 변환하는 것처럼 보이므로 앞에 0이 몇 개 있어도 상관 없으며 "14778"과 "014778"은 동일하므로 위의 예에서는 반환된 The 결과는 우리가 생각했던 d가 아니라 c입니다.

이때 원하는 결과를 얻으려면 === 비교를 수행해야 하는데, 이는 값과 유형을 모두 비교해야 합니다.

array_search의 경우 세 번째 매개변수에 참값을 부여하여 합동 비교를 수행할 수 있습니다.

위 내용은 Note 010 PHP의 == 비교연산자에 대한 참고사항입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


관련 라벨:
php
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿