PHP中的empty、isset、isnull的区别与使用实例

做php开发时候,通常会用到empty,isset,is_null这几个函数,使用不当的话甚至给自己的程序带来一些安全隐患的bug。很多时候,对于isset,empty都认为差不多。因此开发时候,就没有注意,一段作为流程判断时候,就出现bug问题了。下面我们分别介绍一下这三个函数的区别和使用。

empty

如果 变量 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""、0、"0″、NULL、FALSE、array()、var $var、未定义;以及没有任何属性的对象都将被认为是空的,如果 var 为空,则返回 TRUE。 代码示例:

$a = 0;
$b = '';
$c = array();
if (empty($a)) echo '$a 为空' . "";
if (empty($b)) echo '$b 为空' . "";
if (empty($c)) echo '$c 为空' . "";
if (empty($d)) echo '$d 为空' . "";
// 以上输出皆为空

isset

如果 变量 存在(非NULL)则返回 TRUE,否则返回 FALSE(包括未定义)。变量值设置为:null,返回也是false;unset一个变量后,变量被取消了。注意,isset对于NULL值变量,特殊处理。 代码示例:

$a = '';
$a['c'] = '';
if (!isset($a)) echo '$a 未被初始化' . "";
if (!isset($b)) echo '$b 未被初始化' . "";
if (isset($a['c'])) echo '$a 已经被初始化' . "";
// 显示结果为
// $b 未被初始化
// $a 已经被初始化

is_null

检测传入值【值,变量,表达式】是否是null,只有一个变量定义了,且它的值是null,它才返回TRUE . 其它都返回 FALSE 【未定义变量传入后会出错!】

$a = null;
$b = false;
if (is_null($a)) echo '$a 为NULL' . "";
if (is_null($b)) echo '$b 为NULL' . "";
if (is_null($c)) echo '$c 为NULL' . "";
// 显示结果为
// $a 为NULL
// Undefined variable: c

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

(0)

相关推荐

  • PHP错误提示It is not safe to rely on the system……的解决方法

    在php程序开发中有时会出现类似于这样的警告: PHP Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are

  • PHP中命名空间的使用例子

    程序语言中的命名空间指的是一种特殊的作用域,它包含处于该作用域下的标识符,同时它本身也是一种标识符.可以把命名空间与操作系统的目录对应起来.一个命名空间相当于一个目录,命名空间里的类,函数,常量,相当于目录里的文件.同一个目录(命名空间)里的文件名不能相同,但是不同的目录里可以有相同名字的文件. 使用命名空间可以解决名字冲突,比如定义了一个类,正好这个类与PHP内部的类或是include进来的一个类库里的类重名的时候.同时,命名空间还可以提高代码可读性,命名空间有一个别名功能,它可以帮你给一个长

  • PHP随机数函数rand()与mt_rand()的讲解

    PHP中rand()与mt_rand()都是用于产生一个指定范围内单独随机数的函数,如果需要产生多个不重复的随机数,请参考:PHP生成指定范围内的N个不重复的随机数. 既然他们都是用于产生一个随机数,那么他们有什么区别呢? rand() 函数默认使用 libc 随机数发生器,很多老的 libc 的随机数发生器具有一些不确定和未知的特性而且效率很低:mt_rand() 则是用了 Mersenne Twister 中已知的特性作为随机数发生器,它产生随机数值的平均速度比 libc 提供的 rand(

  • 详解PHP变量传值赋值和引用赋值变量销毁

    本文实例为大家分享了PHP变量传值赋值和引用赋值变量销毁的具体代码,供大家参考,具体内容如下 <?php $a = 100; $b = 200; var_dump($a,$b); //int(100) int(200) ?> php中,上面的代码,变量是怎么存放的呢? 上面的代码变动下,将变量b赋值给变量a,会发生什么? <?php $a = 100; $b = 200; $a = $b;/*多了这个*/ var_dump($a,$b); //int(200) int(200) ?>

  • PHP使用OB缓存实现静态化功能示例

    本文实例讲述了PHP使用OB缓存实现静态化功能.分享给大家供大家参考,具体如下: 实现步骤 1.创建测试数据表并且写入数据 2.实现后台的更新操作.使用OB缓存针对每一个内容生成对应的HTML文件 3.显示前台的数据信息 具体实现 ①创建测试数据表并且写入数据(test.sql文件): #创建数据表 create table news( id int auto_increment, title varchar(100) not null default '', body text, primar

  • PHP使用mysqli同时执行多条sql查询语句的实例

    PHP数据库操作中,mysqli相对于mysql有很大的优势,建议大家使用:之前我们有介绍过如何在PHP5中使用mysqli的prepare操作数据库,使用mysqli更是支持多查询特性,请看下面这段php代码: <?php $mysqli = new mysqli("localhost","root","","123456"); $mysqli->query("set names 'utf8'"

  • php微信扫码支付 php公众号支付

    本文实例为大家分享了php微信扫码支付,公众号支付的具体代码,供大家参考,具体内容如下 <?php # 微信统一下单接口 $url = 'https://api.mch.weixin.qq.com/pay/unifiedorder'; $param = [ 'appid' => '公众号id', 'mch_id' => '商户id', 'nonce_str' =>uniqid(), 'sign_type' => 'MD5', 'body' => 'test', 'det

  • PHP析构函数destruct与垃圾回收机制的讲解

    析构函数 当某个对象成为垃圾或者当对象被显式销毁时执行. PHP5中提供的析构函数是__destruct,其与构造方法__construct相对应. 垃圾回收--GC(Garbage Collector) 在PHP中,没有任何变量指向这个对象时,这个对象就成为垃圾,PHP会将其在内存中销毁. 这是PHP的GC(Garbage Collector)垃圾处理机制,垃圾加收可以防止内存溢出. 当一个PHP线程结束时,当前占用的所有内存空间都会被销毁,当前程序中的所有对象同样被销毁. __destruc

  • PHP SESSION机制的理解与实例

    PHP SESSION的保存机制有两种方式,session.save_handler = files和session.save_handler = user,具体选用哪种方式保存,可以通过配置php.ini文件实现. 一.使用读写文件的方式保存 SESSION 数据(session.save_handler = files) 1. session_start() (1). session_start()是session机制的开始,它有一定概率开启垃圾回收,因为session是存放在文件中,PHP

  • PHP实现支持CURL字符串证书传输的方法

    背景 最近在对接微信支付的时候,需要在退款处用到证书,由于我们是SAAS平台,要支持多方多渠道支付,如果把所有证书文件保存在应用服务器会受到SLB的影响,会导致某台机器文件不同步而阻碍退款流程,但把文件存在OSS的话,后端又要从OSS下载到应用服务器来保证一致性.思来想去,最终决定将证书内容保存在数据库,不同客户各对应一份证书文件,无论几台机器做集群都能保证文件的一致性,同时也避免了多余的下载步骤. 问题 但是刚做就遇到了问题,PHP的CURL证书并不支持字符串的传输,只能填写证书路径(以下是官

随机推荐