정수와 문자열 비교: 흔하지 않은 현상 설명
PHP에서 문자열을 정수와 비교하면 때때로 이상한 결과가 나올 수 있습니다. 이러한 혼란은 특히 문자열을 값 0과 비교할 때 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 문서에 따르면 문자열이 숫자 컨텍스트(예: 비교)에서 평가될 때 내용에 따라 부동소수점 또는 정수로 변환됩니다. . 문자열에 '.', 'e' 또는 'E'와 같은 문자가 포함되어 있으면 부동 소수점으로 처리됩니다. 그렇지 않으면 정수로 간주됩니다.
$test1의 경우 문자열에 숫자가 포함되어 있지 않으므로 정수 값 0으로 변환됩니다. 이것이 $test1 == 0 비교가 평가되는 이유입니다.
$test2가 왜 작동하지 않나요?
$test2도 다음으로 시작합니다. 숫자가 아닌 문자인데 왜 0이 아닌가? 이는 문자열의 시작 부분에 문자 '3'이 포함되어 있기 때문입니다. PHP 문서에 따르면 유효한 숫자는 기호(선택 사항)로 시작하고 그 뒤에 숫자가 옵니다. 따라서 $test2는 값이 0인 부동 소수점으로 변환되고 $test2 == 0 비교는 false로 평가됩니다.
위 내용은 PHP의 느슨한 문자열 대 정수 비교가 때때로 예상치 못한 결과를 반환하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!