[PHP] 비교 연산자 == 와 === 의 차이
이 두 비교 연산자의 차이는 비슷하면 "참"으로 인식하고, 아니면 엄격하게 비교한다는 점입니다. == 는 대충이 되고, === 는 엄격하게 인데, 글자 하나라도 틀리다면 "거짓"으로 결정해 버리는 게 === 입니다.
우선 == 로 true 에 대한 비교 를 보겠습니다.
예제(ex #1
<?php $a = 1; if($a == true){ echo "true "; // 결과: true }
$a = true; if($a == true){ echo "true "; // 결과: true }
// 음수도 참이라고 인식합니다. $a = -1; if($a == true){ echo "true "; // 결과: true }
$a = "1"; if($a == true){ echo "true "; // 결과: true }
$a = "-1"; if($a == true){ echo "true "; // 결과: true } ?>
|
다음은 == 로 false 의 비교 입니다.
예제(ex #2
<?php $a = false; if($a == false){ echo "true "; // 결과: true }
// 0 이거나 문자열 "0" 이면 false입니다. $a = 0; if($a == false){ echo "true "; // 결과: true }
$a = array();; if($a == false){ echo "true "; // 결과: true }
$a = ""; if($a == false){ echo "true "; // 결과: true }
$a = null; if($a == false){ echo "true "; // 결과: true } ?>
|
다음은 == 로 문자열 "php"에 대한 비교인데, 결과는 흥미롭게 나옵니다.
예제(ex #3
<?php $a = true; if($a == "php"){ echo "true "; // 결과: true }
// 0 이면 true 이고, 문자열 "0" 이면 false 로 인식합니다. // 0 == false 이면, 0 == "php"는 false가 아닙니다. $a = 0; if($a == "php"){ echo "true "; // 결과: true }
$a = "php"; if($a == "php"){ echo "true "; // 결과: true } ?>
|
앞서 본 바와 같이 == 는 정확한 비교가 조금 어려울 수 있음을 알아 둘 필요가 있습니다. 이제 === 로 true 에 대한 비교를 해보겠습니다.
예제(ex #4
<?php // true는 상수 1의 값을 가지지만 // 정수 1은 아니므로 false 입니다. $a = 1; if($a === true){ echo "true "; // 결과: }
$a = true; if($a === true){ echo "true "; // 결과: true }
$a = -1; if($a === true){ echo "true "; // 결과: }
$a = "1"; if($a === true){ echo "true "; // 결과: }
$a = "-1"; if($a === true){ echo "true "; // 결과: } ?>
|
예제(ex #5
<?php $a = false; if($a === false){ echo "true "; // 결과: true }
// 0 은 false 이지만 상수 false 가 아니므로 거짓입니다. $a = 0; if($a === false){ echo "true "; // 결과: }
$a = array();; if($a === false){ echo "true "; // 결과: }
$a = ""; if($a == false){ echo "true "; // 결과: }
// null 은 false 와 같지만 상수 false가 아니므로 거짓입니다. $a = null; if($a === false){ echo "true "; // 결과: } ?>
|
예제(ex #6
<?php $a = true; if($a === "php"){ echo "true "; // 결과: }
$a = 0; if($a === "php"){ echo "true "; // 결과: }
$a = "php"; if($a === "php"){ echo "true "; // 결과: true } ?>
|
예제(ex #7
<?php $a = ""; if($a === null){ echo "true "; // 결과: }
$a = ""; if($a === ""){ echo "true "; // 결과: true }
$a = ""; if($a === " "){ echo "true "; // 결과: }
$a = ""; if($a === false){ echo "true "; // 결과: } ?>
|
예제(ex #8
<?php $a = NULL; if($a === null){ echo "true "; // 결과: true }
$a = ""; if($a === ""){ echo "true "; // 결과: true }
$a = " "; if($a === " "){ echo "true "; // 결과: true }
$a = array(); if($a === array()){ echo "true "; // 결과: true }
$a = FALSE; if($a === false){ echo "true "; // 결과: true } ?>
|
가능하다면 엄격한 === 로 비교하는게 좋지 않을까요? 왜냐하면, == 와 === 에 대한 이해 차이로 공격자는 이러한 빈틈에 여러분의 웹사이트를 공격할지도 모른다는 사실입니다. 개발자도 사람인지라 실수를 하니까요.
예제(ex #9
<?php if("php" == 0){ echo "true "; // 결과: true }
if(0 == null){ echo "true "; // 결과: true }
if(null == "php"){ echo "true "; // 결과: } ?>
|
출처 : https://blog.habonyphp.com/138