나는 잠시 동안 PHP에서 프로그래밍을 해왔지만 여전히 ==와 ===의 차이점을 이해하지 못합니다. 나는 그것이 = 임무라는 것을 압니다. 그리고 ==는 같음. 그래서 목적은 무엇입니까? 데이터 유형은 동일한뿐만 아니라 값이면PHP에서 무엇을합니까 ===
5
A
답변
26
않습니다. ! == 유형 및 값 부등식
if("45" !== 45) //true
if(45 !== 45) //false
if(0 !== false)//true
비교 그것은 strpos 추천 기능에 특히 유용하다 - 유효 0을 반환 할 수있다 :
if("45" === 45) //false
if(45 === 45) //true
if(0 === false)//false
그것은 아날로그있다. 트리플 같음을 비유가 다른 언어를 나열
strpos("hello world", "hello") //0 is the position of "hello"
//now you try and test if "hello" is in the string...
if(strpos("hello world", "hello"))
//evaluates to false, even though hello is in the string
if(strpos("hello world", "hello") !== false)
//correctly evaluates to true: 0 is not value- and type-equal to false
4
그것은 확인한다
if ("21" == 21) // true
if ("21" === 21) // false
3
===
값 및 유형을 비교한다.
2
== 유형을 비교하지 않습니다. === 않습니다.
0 == false
은 참으로 평가하지만
0 === false
그것은 두 값을 비교하고 평등을 입력하지
0
진정한 평등 비교입니다.
"" == False
은 예를 들어 true
입니다. ===
"" === False
=== 값을 입력 모두를 비교하는 것은 사실이다 false
12
이지만, 거기에 아직 언급되지 않은 한 경우이며 ==와와 객체를 비교할 때 즉 .
주어진 다음 코드 개체 경우
class TestClass {
public $value;
public function __construct($value) {
$this->value = $value;
}
}
$a = new TestClass("a");
$b = new TestClass("a");
var_dump($a == $b); // true
var_dump($a === $b); // false
는 === ($ a와 $ B 모두 동일한 타입의 값만큼) 값을 입력하지 않는 기준을 비교한다.
6
PHP 설명서에는 다양한 변수 유형을 비교할 때 어떤 결과가 나오는지 보여주는 a couple of very nice tables ("느슨한 비교 =="및 "엄격한 비교 ===")이 있습니다.
0
최소 ===는 자동화 된 주조/교정이 없기 때문에 ==보다 빠르지 만 그다지 언급 할 가치가 없다. (물론, 방금 언급했는데 ...)
strpos의 경우 "false"/ "true"주석은 분명하지 않지만 문맥에서 충분히 이해할 수있을 것입니다. – luiscubal
또한, Tom이 지적한 결과로 반환 값을 평가할 때 거의 항상 === 또는! ==를 사용하는 것이 좋습니다. 함수가 현재 모호한 값을 반환하지 않더라도 나중에 변경 될 수 있습니다. –
@luiscubal - 명확히했습니다. –