PHP를 사용하는 많은 사람들은 아직도 PHP에서 0, "", null, false의 차이를 이해하지 못하고 있습니다. 이러한 차이점은 때때로 데이터 판단의 정확성과 보안에 영향을 미쳐 프로그램 테스트 실행에 많은 문제를 일으키기도 합니다. .
먼저 예를 살펴보겠습니다.
$str1 = null;
$str2 = false;
echo $str1 == $str2 ? '같음' : '같지 않음';
$str3 = "";
$str4 = 0;
echo $str3==$str4 ? ' 같음' : '같지 않음';
$str5 = 0;
$str6 = '0';
echo $str5===$str6 ' 같음' : '같지 않음';
$str7=0;
$str=false;
echo $str7==$str8 ? '같지 않음' 같음' ;
?>
실행 결과:
//같음, 같음, 같지 않음, 같음.
이유는 PHP의 변수는 C 언어 구조로 저장되기 때문입니다. 빈 문자열, NULL, false는 모두 0의 값으로 저장됩니다. 이 구조에는 zend_uchartype; 이러한 멤버 변수가 사용됩니다. 변수의 유형을 저장하기 위해 빈 문자열의 유형은 문자열, NULL의 유형은 NULL, false는 부울입니다.
echo gettype('') 및 echogettype(NULL)을 사용하여 이를 인쇄할 수 있습니다! === 연산자는 값을 비교할 뿐만 아니라 유형도 비교하므로 세 번째는 false입니다!
그래서 ===는 다음 function과 같다고 할 수 있습니다:
functioneq($v1,$v2)
{
if($v1==$v2&&gettype ($v1)
==gettype($v2)) {
반환1 ;
} else {
return0;
}
}
너무 비어 있음 문자열(''), false, NULL, 0은 값은 같지만 유형이 다릅니다!
참고:
NULL은 특수 유형입니다.위 내용은 관련 내용을 포함하여 PHP에서 0, " ", null 및 false의 차이점을 소개합니다. PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.