empty是判断变量值是非空或非零的值。对应空定义包括:“”(空字符串)、0、“0”、NULL、FALSE、array()和$var(只声明但未赋值)。也就是说当变量值为上述这些,empty返回TRUE,其他的都返回FALSE。 isset是检测变量是否设置,并且不是 NULL。变量设置可以从
empty是判断变量值是非空或非零的值。对应空定义包括:“”(空字符串)、0、“0”、NULL、FALSE、array()和$var(只声明但未赋值)。也就是说当变量值为上述这些,empty返回TRUE,其他的都返回FALSE。
isset是检测变量是否设置,并且不是 NULL。变量设置可以从几个方面来说。1:最简单的就是变量是否先声明和赋值;2:array中是否存在对应的index或key;3:object中是否存在对应的属性。
从上面的两个function定义可以看到,在某些情况下,两者可以公用,但其区别还是很大的。另外它们都只能检测变量,检测任何非变量的东西都将导致解析错误。例如直接检查另一个function的返回值(empty(otherFunction())),你将看到“Fatal error: Can’t use function return value in write context in”这样的错误。
另外isset可以一次检查多个变量,例如:isset($var1, $var2, $var3),当这三个值分别的isset都为TRUE结果为TRUE,否则结果为FALSE。
测试代码:
$sep = ""; echo 'test undeclared var empty : '; var_dump(empty($var)); // TRUE echo $sep . 'test undeclared var isset : '; var_dump(isset($var)); // FALSE $var; echo $sep . 'test declared var but no set value empty : '; var_dump(empty($var)); // TRUE echo $sep . 'test declared var but no set value isset : '; var_dump(isset($var)); // FALSE, 变量申明未赋值,默认值为NULL $var = NULL; echo $sep . 'test declared var and set value NULL empty : '; var_dump(empty($var)); // TRUE echo $sep . 'test declared var and set value NULL isset : '; var_dump(isset($var)); // FALSE, 变量申明赋值为NULL $var1 = ''; $var2 = '0'; $var3 = 0; $var4 = FALSE; $var5 = array(); echo $sep . 'test \'\' empty : '; var_dump(empty($var1)); // TRUE echo $sep . 'test \'0\' empty : '; var_dump(empty($var2)); // TRUE echo $sep . 'test 0 empty : '; var_dump(empty($var3)); // TRUE echo $sep . 'test FALSE empty : '; var_dump(empty($var4)); // TRUE echo $sep . 'test array() empty : '; var_dump(empty($var5)); // TRUE echo $sep . 'test \'\', \'0\', 0, FALSE, array() isset : '; var_dump(isset($var1, $var2, $var3, $var4, $var5)); // TRUE, 变量申明并赋值为空字符串
输出的结果为:
test undeclared var empty : bool(true) test undeclared var isset : bool(false) test declared var but no set value empty : bool(true) test declared var but no set value isset : bool(false) test declared var and set value NULL empty : bool(true) test declared var and set value NULL isset : bool(false) test '' empty : bool(true) test '0' empty : bool(true) test 0 empty : bool(true) test FALSE empty : bool(true) test array() empty : bool(true) test '', '0', 0, FALSE, array() isset : bool(true)
原文地址:也谈empty与isset区别, 感谢原作者分享。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경
