>백엔드 개발 >PHP 튜토리얼 >PHP에서 문자열을 0과 비교하면 때로는 True를 반환하고 때로는 False를 반환하는 이유는 무엇입니까?

PHP에서 문자열을 0과 비교하면 때로는 True를 반환하고 때로는 False를 반환하는 이유는 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-07 16:23:12408검색

Why Does Comparing a String to 0 in PHP Sometimes Return True and Sometimes Return False?

문자열과 정수의 흥미로운 비교 이해

많은 프로그래머는 다음 PHP 코드의 동작에 의아해합니다.

$test1 = "d85d1d81b25614a3504a3d5601a9cb2e";
$test2 = "3581169b064f71be1630b321d3ca318f";

if ($test1 == 0)
  echo "Test 1 is Equal!?";
if ($test2 == 0)
  echo "Test 2 is Equal!?";

이 코드는 놀랍게도 "Test 1 is Equal!?"이 출력됩니다. 오직. 왜 이런 일이 발생합니까?

느슨한 비교와 문자열을 숫자로 변환

이 동작을 이해하는 열쇠는 PHP의 느슨한 비교 메커니즘에 있습니다. == 연산자를 사용하여 문자열을 정수와 비교할 때 PHP는 문자열을 숫자로 변환하려고 시도합니다.

PHP 매뉴얼에 따르면 문자열을 숫자로 변환하는 규칙은 다음과 같습니다.

  • 문자열에 소수점, 지수 또는 'e' 문자가 포함되어 있으면 부동 소수점으로 해석됩니다.
  • 그렇지 않으면 부동 소수점으로 해석됩니다. 정수.

$test1의 경우 $test1 == 0 비교는 문자열 $test1을 정수로 평가하여 결과가 0이 됩니다. 따라서 등식 조건을 만족하고 "를 출력합니다. 테스트 1이 같음!?"

예외 규칙

그러나 $test2의 경우 잘못된 문자 'b'가 포함되어 정수 변환이 실패합니다. 결과적으로 PHP는 정수 컨텍스트에서 $test2를 0으로 변환하여 $test2 == 0 비교를 false로 만듭니다.

결론

문자열 비교의 명백한 불일치 정수로 변환하는 문제는 PHP의 느슨한 비교 규칙과 문자열에서 숫자로의 변환 메커니즘을 이해함으로써 해결됩니다. 문자열을 0과 비교할 때 변환 규칙에 따라 비교가 참인지 거짓인지가 결정됩니다.

위 내용은 PHP에서 문자열을 0과 비교하면 때로는 True를 반환하고 때로는 False를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.