2013-06-17 3 views
4

isset($foo)은 항상 !$foo과 동일한 결과를 표시합니까?

내가 사용하는 PHP는 경고를 받고 있어요 코드의 peice 있습니다

if(!$foo){} 

을 그리고 난 내가 사용되어야한다고 확신 :

if(!isset($foo)){} 

그리고 나를 만든 내가 여기서 기능을 바꾸는 지 아닌지 궁금해.

답변

9

번호

를 얻을 수 있습니다. 부울 FALSENULL (기능적으로는 isset()과 동일 함), 빈 문자열, 0, 빈 배열과 같습니다.

isset을 사용하면 변수가없는 경우 오류가 발생하지 않습니다. 존재하지 않는 변수와 함께 !을 사용하면 E_NOTICE이 표시됩니다.

8

한 테스트가 참이 아닌 경우 값이 다른 테스트 설정되지 않은 경우.

비교 : 그것은 foo는 무엇인지에 따라 달라집니다

<?php 
$foo = 0; 

if(!$foo){ echo 1; } 
if(!isset($foo)){ echo 2; } 
?> 
1

.

Foo를 1로 설정하거나 적용하지 않을 값을 설정할 수 있습니다. 변수가 설정된 경우에도 그래서, 당신은 변수가 논리 값으로 주조 된 부울 부정 연산자 !을 사용하여 의도하지 않은 행동을