2013-07-28 3 views
2

내가 테스트 한 배열이 null이라는 것이 확실합니다. 심지어 var_dump(array)을 인쇄하면 array(0) { }이 인쇄됩니다.PHPUnit assertNull() 테스트가 실패합니다.

그러나 테스트 $this->assertNull($array);은 실패합니다. 왜 그런지 이해가 안

if ($array == null) { 
    echo "Entered"; 
} else { 
    echo "Not Entered"; 
} 

: 나는 코드 아래 테스트 할 때 반대로
그것은 if 상태로 들어갑니다. 이유를 아는 사람이 있으면 저에게 설명해주십시오.

답변

4

array(0) { }은 빈 배열입니다.

null에는 배열이 전혀 없을 것입니다.

그들은 같은 것이 아닙니다.

== 문제는 일치하는 값을 저글링하려고 시도한다는 것입니다. 빈 배열은 null과 같이 "거짓"입니다.

차이점을 보려면 대신 ===을 사용하십시오.이 유형은 juggle을 입력하지 않고 유형을 비교합니다.

$array1 = null; 
$array2 = array(); 
if ($array1 == null) echo '1';  // $array1 is "similar to" null. 
if ($array1 === null) echo '2'; // $array1 is null 
if ($array2 == null) echo '3';  // $array2 is "similar to" null 
if ($array2 === null) echo '4'; // $array2 is null 

>>> 123 

More on the comparison operators here.

+0

그렇다면'if ($ array == null)'이 만족되는 이유는 무엇입니까? – Geek

+2

비교할 값을 타입 변환하기 때문에. '$ array === null'을 사용해보십시오. 그리고 http://www.php.net/manual/en/types.comparisons.php에서 PHP의 비교를 확인하십시오. – Sven

+0

예와 설명에 감사드립니다. – Geek

관련 문제