답변:
당신이 찾고있는 것은 :
if($variable === NULL) {...}
를 참고하십시오 ===
.
을 사용하면 ==
PHP는 NULL , false , 0 , 빈 문자열 및 빈 배열을 동일하게 취급합니다.
== null
빈 문자열과 일치 하는지, 왜 null 또는 undefined가 아닌지 궁금했습니다 .
$a = ''
빈입니다 string
, false
, 부울 것은 $a = 0;
정수 및 null
유형에서입니다 null
. OP가 말하고있는 것은 PHP는 그것들을 "동일한"값으로 쓰지만 "동일한"타입으로 쓰지 않는다는 것입니다. 따라서 엄격한 ===
검사는 유형을 확인하고 다른 유형을 사용하면 실패합니다. 그것이 당신이 당신의 반환 가치에 일치 해야하는 이유입니다. 와 같은 메소드에서 문자열을 getName()
정상적으로 반환하면 null
비어있을 때 얻을 수 없지만 빈 문자열 $user->getName() === ''
이나 $user->getId() === 0
또는 가능성이 높습니다 $user->isActive === false
. 의도 된 행동!
다음 표에 도시 된 바와 같이, empty($foo)
동등 $foo==null
과 is_null($foo)
같은 기능을 갖는다 $foo===null
. 이 표는 또한 null
비교 와 관련된 까다로운 값을 보여줍니다 . (ϕ는 초기화되지 않은 변수를 나타냅니다.)
empty is_null
==null ===null isset array_key_exists
ϕ | T | T | F | F
null | T | T | F | T
"" | T | F | T | T
[] | T | F | T | T
0 | T | F | T | T
false | T | F | T | T
true | F | F | T | T
1 | F | F | T | T
\0 | F | F | T | T
나는 결코 사용 empty()
하고 is_null()
기능 하지 않습니다 . 간단한 비교를 사용하면 모호하고 빠르며 깨끗합니다. 특히 일치하는 중괄호가 줄어 듭니다.
예 : if($x==null || $y==null)
vsif(is_null($x) || is_null($y))
==null
과 ===null
.
체크 ==
vs===
'' == NULL
true
0 == NULL
를 반환합니다. true
false == null
를 반환합니다. true 를 반환합니다.
어디서
'' === NULL
거짓
0 === NULL
을 반환합니다 거짓
false === NULL
을 반환합니다
아니 버그가 아닙니다. 첫 번째 열의 각 값과 다른 열의 값을 비교 한 결과를 보여주는 == 테이블 (두 번째 테이블) 과 의 느슨한 비교를 살펴보십시오 .
TRUE FALSE 1 0 -1 "1" "0" "-1" NULL array() "php" ""
[...]
"" FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE
당신은 빈 문자열이 있음이 볼 수 ""
에 비해 false
, 0
, NULL
또는 ""
진정한 얻을 것입니다.
대신 is_null
[docs] 를 사용 하거나 엄격한 비교 (세 번째 테이블) 를 사용할 수 있습니다 .
이 없는 버그하지만 PHP 정상적인 동작. ==
PHP 의 연산자가 유형을 확인하지 않기 때문에 발생 합니다.
'' == null == 0 == false
값의 유형이 같은지 확인하려면 ===
대신 사용하십시오. 이 차이점에 대해 자세히 알아 보려면 공식 문서 를 읽으십시오 .
-http empty
: //php.net/manual/en/function.empty.php를 사용 하십시오 .
예:
$a = '';
if(empty($a)) {
echo 'is empty';
}
$variable
합니다. 당신이 원하는 것은 실제로 :$variable == null
(참고==
)