다음과 관련하여 일부 데이터 파싱 코드를 작성하고있었습니다.이상한 PHP 문자열 정수 비교 및 변환
$line = "100 something is amazingly cool";
$key = 100;
var_dump($line == $key);
그럼 우리 대부분은 덤프가 false
을 생산하는 기대하지만 놀랍게도에 덤프는 true
이었다!
$x = 5 + "10 is a cool number"; // as documented on PHP manual
var_dump($x); // int(15) as documented.
하지만 첫 번째 예에서 언급 한 방법과 같은 비교가 변환 않는 이유를 내 문자열을 문자열로 정수를 변환하는 대신 정수로 :
나는 PHP에서 같은 유형 변환이 있음을 이해한다.
난 당신이 내 예에 ===
엄격한 비교를 할 수있는 이해,하지만 난 그냥 알고 싶어
- 이 동작에 언급은 PHP 문서의 어떤 부분이 있습니까?
- PHP에서 왜 그런 일이 일어날 지 설명 할 수 있습니까?
- 어떻게 프로그래머가 이러한 문제를 방지 할 수 있습니까?
== 나는 숫자 비교를한다고 생각합니다. 그리고 숫자를 문자열로 가져 와서 숫자로 변환하면 그 숫자를 사용합니다. 아마 NaN과 같은 것을 반환하지 않는다면. – rubixibuc
우리 대부분은 이것을 기대할 것입니다 ....문자열을 정수로 캐스팅 할 때 (문자열을 숫자와 비교할 때와 같이), PHP는 첫 번째 숫자가 아닌 숫자 (이 경우 100 자리 숫자와 "무언"사이)에서 멈 춥니 다. SO 100은 결과 값입니다. –
참조 http://stackoverflow.com/a/8672423 – Gumbo