php中empty与isset的区别,empty与isset有什么区别

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, 变量申明并赋值为空字符串

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

$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)

1

2

3

4

5

6

7

8

9

10

11

12

testundeclaredvarempty:bool(true)

testundeclaredvarisset:bool(false)

testdeclaredvarbutnosetvalueempty:bool(true)

testdeclaredvarbutnosetvalueisset:bool(false)

testdeclaredvarandsetvalueNULLempty:bool(true)

testdeclaredvarandsetvalueNULLisset:bool(false)

test''empty:bool(true)

test'0'empty:bool(true)

test0empty:bool(true)

testFALSEempty:bool(true)

testarray()empty:bool(true)

test'','0',0,FALSE,array()isset:bool(true)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值