2009-05-14 1 views
5

나는 잠시 동안 PHP에서 프로그래밍을 해왔지만 여전히 ==와 ===의 차이점을 이해하지 못합니다. 나는 그것이 = 임무라는 것을 압니다. 그리고 ==는 같음. 그래서 목적은 무엇입니까? 데이터 유형은 동일한뿐만 아니라 값이면PHP에서 무엇을합니까 ===

답변

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 

Here's a good wikipedia table.

+0

strpos의 경우 "false"/ "true"주석은 분명하지 않지만 문맥에서 충분히 이해할 수있을 것입니다. – luiscubal

+0

또한, Tom이 지적한 결과로 반환 값을 평가할 때 거의 항상 === 또는! ==를 사용하는 것이 좋습니다. 함수가 현재 모호한 값을 반환하지 않더라도 나중에 변경 될 수 있습니다. –

+0

@luiscubal - 명확히했습니다. –

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

최소 ===는 자동화 된 주조/교정이 없기 때문에 ==보다 빠르지 만 그다지 언급 할 가치가 없다. (물론, 방금 언급했는데 ...)