PHP는 두 개의 다른 문자열을 동일하게 표현합니다.
중복 가능성 :
php == vs === 연산자
같음 (== 이중 같음) 및 동일성 (=== 삼중 같음) 비교 연산자는 어떻게 다릅니 까?
다음 문이 반환되는 이유는 무엇 true
입니까?
"608E-4234" == "272E-3063"
나는 또한 문자열 주위에 작은 따옴표로 이것을 시도했습니다. 평가할 수있는 유일한 방법 false
은 ===
대신 연산자를 사용하는 것입니다.==
내 생각 엔 PHP가 그것을 일종의 방정식으로 취급하고 있지만 약간 이상한 것 같습니다.
아무도 자세히 설명 할 수 있습니까?
"608E-4234"
는 IS 플로트 번호 형식은 그들이 비교 할 때이 번호에 던져 있도록.
608E-4234
그리고 272E-3063
둘 것 float(0)
이 너무 작기 때문에.
들어 ==
PHP에서,
숫자를 문자열 과 비교하거나 비교에 숫자 문자열이 포함 된 경우 각 문자열이 숫자로 변환되고 비교가 숫자로 수행됩니다.
http://php.net/manual/en/language.operators.comparison.php
주의:
==
와 둘 다있는 자바 스크립트의 동작은 ===
어떻습니까?
대답은 동작이 PHP와 다르다는 것입니다. 자바 스크립트에서 동일한 유형의 두 값을 비교하면는와 ==
동일 ===
하므로 두 개의 동일한 유형 값과 비교할 때 유형 캐스트가 발생하지 않습니다.
자바 스크립트에서 :
608E-4234 == 272E-3063 // true
608E-4234 == "272E-3063" // true
"608E-4234" == 272E-3063 // true
"608E-4234" == "272E-3063" // false (Note: this is different form PHP)
따라서 javascript에서 결과 유형을 알고 있으면 한 문자를 저장 하는 ==
대신 사용할 수 있습니다 ===
.
예를 들어 typeof
연산자는 항상 문자열을 반환하므로
typeof foo == 'string'
typeof foo === 'string'
해가없는 대신 .
PHP는 부동 소수점에 IEEE 754를 사용하며 숫자가 너무 작아서 0으로 평가됩니다.
참조 : http://en.wikipedia.org/wiki/IEEE_floating_point
Name Common name Base Digits E min E max
binary32 Single precision 2 23+1 −126 +127
binary64 Double precision 2 52+1 −1022 +1023
나는 PHP가 이것을 과학적 구문으로 읽으며 다음과 같이 번역 될 것이라고 생각합니다.
608 x 10^-4234 == 272 x 10^-3063
PHP는 이것을 0 = 0
.
PHP는 부동 소수점 숫자로 그 문자열을 비교하고, 그렇게 둘은 제로인 해야 사용 ===
, 연산자를
대답하려고합니다. "==="를 사용하는 경우 값 대신 유형으로도 확인합니다. "=="를 사용하는 경우 값이 동일한 지 확인하면됩니다.
이것이보고있는 것입니다 :
http://www.wolframalpha.com/input/?i=608E-4234&dataset=
http://www.wolframalpha.com/input/?i=272E-3063
변수에 맞지 않기 때문에 둘 다 0 또는 php가 선택하는 기본값과 동일하므로 동등합니다.
참고 URL : https://stackoverflow.com/questions/12598407/php-expresses-two-different-strings-to-be-the-same
'developer tip' 카테고리의 다른 글
Webstorm에서 경고하는 수많은 미해결 변수와 싸우는 방법은 무엇입니까? (0) | 2020.08.15 |
---|---|
Java 클래스가 구현 된 인터페이스에서 주석을 상속하지 않는 이유는 무엇입니까? (0) | 2020.08.15 |
부모 div 내부에 수평으로 div를 중앙에 배치하는 방법 (0) | 2020.08.15 |
PHP를 사용하여 SVG 이미지를 PNG로 변환 (0) | 2020.08.15 |
JavaScript 배열 중괄호 대 대괄호 (0) | 2020.08.15 |