php中有三个函数, 它们很容易让人混淆, 我们今天就来弄明白它们的区别.

数据类型

我们只做简单的数据类型的区别, 这个搞懂了, 对象数组也一个道理.

php的数据类型有 string, number, boolean, null, undefind 五种基础类型, 它们就是我们容易混淆的关键.

undefind: 代表没有定义变量, 也就是根本不存在的状态.

null: 当我们定义了变量, 但是不知道给变量是什么类型的时候, 就可以设置为null, 这个比undefind前进了一步.

string,number,boolean的初始值: 这三个类型大家都懂, 但是它们的初始值'',0,false则非常关键, 是在null的基础上又进了一步, 当我们知道变量是什么类型的时候, 但是不确定给什么值得时候就可以给初始值.

string,number,boolean的常规值: 常规值没什么好说的, 就是在初始值的基础上又进了一步.

isset, empty的比较

当我们有了上面的数据类型基础后就可以讨论isset, empty, is_null的区别了.

isset: 当一个变量没定义(undefind)或者定义了但是不确定是什么类型(null), 则表示没有设置, 也就是false, 反之则是true.

empty: 当一个变量没定义(undefind)或者定义了但是不确定是什么类型(null), 又或者定义了也确定了类型但是不知道赋给什么值('',0,false), 则表示空, 也就是true, 反之则是false.

可以看出isset和empty是递进关系, 可以理解为empty是isset的增强. 下面是对比的代码:

// isset的测试

<?php

isset($var); //false

$var = null;
isset($val); //false

$var = '';
isset($val); //true

$var = 0;
isset($val); //true

$var = false;
isset($val); //true



// empty的测试

empty($var); //true

$var = null;
empty($val); //true

$var = '';
empty($val); //true

$var = 0;
empty($val); //true

$var = false;
empty($val); //true

is_null

好了, 现在可以说is_null了, 其实is_null和isset, empty不是一个层次的, is_null和is_boolean, is_int等函数才是一个层次.

is_null: 如果变量没定义, 直接报错; 如果变量定义了但是不知道什么类型(null), 则是true; 其他情况都是false.

//is_null测试

is_null($var); //Undefined variable异常

$var=null;
is_null($var); //true

参考资料

PHP: isset - Manual PHP: empty - Manual PHP: is_null - Manual isset vs empty vs is_null

THE END
开启精彩搜索

历史搜索

用户名或邮箱
密码
用户名
密码
重复密码
邮箱
注册
找回密码
注册 登录
邮箱
邮箱验证码
发送验证码
59秒后可重发
新密码
重复密码
请选择支付方式
余额支付

购买将消耗【10

微信支付
微信扫码支付 0 元
[ 04分50秒 ]
请使用微信扫一扫
扫描二维码支付
支付宝支付
支付宝扫码支付 0 元
[ 04分50秒 ]
请使用支付宝扫一扫
扫描二维码支付
已完成支付
未完成支付

请输入验证码

点击验证码可以刷新

你确认吗?

确认

2024年10月1日

新增

新增