문자열과 정수의 흥미로운 비교 이해
많은 프로그래머는 다음 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 매뉴얼에 따르면 문자열을 숫자로 변환하는 규칙은 다음과 같습니다.
$test1의 경우 $test1 == 0 비교는 문자열 $test1을 정수로 평가하여 결과가 0이 됩니다. 따라서 등식 조건을 만족하고 "를 출력합니다. 테스트 1이 같음!?"
예외 규칙
그러나 $test2의 경우 잘못된 문자 'b'가 포함되어 정수 변환이 실패합니다. 결과적으로 PHP는 정수 컨텍스트에서 $test2를 0으로 변환하여 $test2 == 0 비교를 false로 만듭니다.
결론
문자열 비교의 명백한 불일치 정수로 변환하는 문제는 PHP의 느슨한 비교 규칙과 문자열에서 숫자로의 변환 메커니즘을 이해함으로써 해결됩니다. 문자열을 0과 비교할 때 변환 규칙에 따라 비교가 참인지 거짓인지가 결정됩니다.
위 내용은 PHP에서 문자열을 0과 비교하면 때로는 True를 반환하고 때로는 False를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!