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
推荐文章
  • AI当中system、user、assistant三者的角色区别

  • 重新组织函数(1)

  • 黄帝内经-第39篇-举痛论篇(1)

  • configuration.module has an unknown property 'loaders'

  • linux安装nodejs

  • 使用acme生成https证书,并部署

  • axios的timeout不生效

  • 如何吸引用户注意力(1)

评论 共0条
开启精彩搜索

热门搜索

暂无

历史搜索

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

购买将消耗【10

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

请输入验证码

点击验证码可以刷新

你确认吗?

确认

2024年10月1日

0字

0字

2024年10月

0字

新增

0字

新增

0字

0字

新增

0字

0字

新增

0字

0字

新增

0字

0字

新增

0字

0字

新增

0字

0字

新增

0字

0字

0字

新增

0字

0字

0字

0字

新增

0字

0字