开发中经常会遇到验证某个参数是否是null或者是否为空。

一、isset()、is_null() 、empty() :

  isset():检测变量是否设置,并且不是 NULL.如果变量没有赋值 或者 变量赋值为null.为 false.

  is_null():检测变量是否为 NULL,变量未声明,提示错误,结果输出。

  empty() :判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。

$def1;
$def2=0;
$def3=false;
$def4='';
$def5=array();
$def6=null; echo('-- isset() --');
echo("<br/>");
echo('$def1');
var_dump(isset($def1) );
echo("<br/>");
echo('$def2=0 :');
var_dump(isset($def2) );
echo("<br/>");
echo('$def3=false :');
var_dump(isset($def3) );
echo("<br/>");
echo('$def4=\'\' :');
var_dump(isset($def4) );
echo("<br/>");
echo('$def5=array() :');
var_dump(isset($def5) );
echo("<br/>");
echo('$def5=null :');
var_dump(isset($def6) );
echo("<hr/>"); echo('-- is_null() --');
echo("<br/>");
echo('$def1');
var_dump(is_null($def1) );
echo("<br/>");
echo('$def2=0 :');
var_dump(is_null($def2) );
echo("<br/>");
echo('$def3=false :');
var_dump(is_null($def3) );
echo("<br/>");
echo('$def4=\'\' :');
var_dump(is_null($def4) );
echo("<br/>");
echo('$def5=array() :');
var_dump(is_null($def5) );
echo("<br/>");
echo('$def5=null :');
var_dump(is_null($def6) );
echo("<hr/>"); echo('-- empty() --');
echo("<br/>");
echo('$def1');
var_dump(empty($def1) );
echo("<br/>");
echo('$def2=0 :');
var_dump(empty($def2) );
echo("<br/>");
echo('$def3=false :');
var_dump(empty($def3) );
echo("<br/>");
echo('$def4=\'\' :');
var_dump(empty($def4) );
echo("<br/>");
echo('$def5=array() :');
var_dump(empty($def5) );
echo("<br/>");
echo('$def5=null :');
var_dump(empty($def6) );
echo("<hr/>");
常用类型默认值,分三段,isset(),is_null(),empty(),是怎样对待默认值的

输出:

-- isset() --
$def1bool(false)
$def2=0 :bool(true)
$def3=false :bool(true)
$def4='' :bool(true)
$def5=array() :bool(true)
$def5=null :bool(false)
-- is_null() --
$def1 Notice: Undefined variable: def1 in C:\Users\Sunn\Desktop\yii\yii\apps\blog\index.php on line 35 Call Stack: 0.0037 135992 1. {main}() C:\Users\Sunn\Desktop\yii\yii\apps\blog\index.php:0 bool(true)
$def2=0 :bool(false)
$def3=false :bool(false)
$def4='' :bool(false)
$def5=array() :bool(false)
$def5=null :bool(true)
-- empty() --
$def1bool(true)
$def2=0 :bool(true)
$def3=false :bool(true)
$def4='' :bool(true)
$def5=array() :bool(true)
$def5=null :bool(true)

isset():变量是否设置了有效值(变量存在且不为NULL)

is_null:变量是否为NULL(变量未声明也算,会有错误提示)

empty():这个不太友好,标准类型的默认值,被认为空。

总结:isset()   is_null()    empty()  — isset()包容性比较高,其次是is_null,我会根据实际情况严格程度进行使用。

二、defined:检查某个名称的常量是否存在,这个函数是检测常量的。

 define("NAME","sc");
echo('-- Const: NAME --');
echo("<br/>");
echo("NAME :");
var_dump(defined('NAME'));
var_dump(NAME);

输出:

-- Const: NAME --
NAME :bool(true) string(2) "sc"
is_null : bool(false)

php--isset()、is_null() 、empty()的更多相关文章

  1. isset、empty、var==null、is_null、var===null详细理解

    //isset: 判断变量是否被初始化 //它并不会判断变量是否为空,并且可能用来判断数组中元素是否被定义 //听说在数组用isset与array_key_exists高出4倍 $a = " ...

  2. isset、is_null、empty的区别

    版本:PHP 5.4 1.isset() :检测变量是否存在,测试如下: $a = false; $b = null; $c; $d = 0; $e = true; var_dump(isset($a ...

  3. 11月1日上午PHP------empty、 is_null、isset、unset的区别

    1.empty 判断一个变量是否为"空".null.false.00.0.'0′.』.为以上值的变量在检测時都将返回true. 2.isset 判断一个变量是否已经设置.0.00. ...

  4. null、 is_null() 、empty() 、isset() PHP 判断变量是否为空

    PHP中,在判断变量是否为空的时候,总会纠结应该选用哪个函数,下面列取常用的多种情况,其中1/3经过我的验证,其它来自网络,验证后使用... 使用 PHP 函数对变量 $x 进行比较 表达式 gett ...

  5. PHP的isset()、is_null、empty()使用总结

    这几个变量判断函数在PHP开发中用的其实挺多的,而且粗看上去都差不多,但其实还是有不少的区别的,如果搞不清楚,也许就会遗留一些潜在的bug, 包括我自已也遇到过这样的坑,比如有一次我就遇到过用empt ...

  6. php中empty()、isset()、is_null()和变量本身的布尔判断区别(转)

    在php脚本中,我们经常要去判断一个变量是否已定义或者是否为空,就需要用到这些函数empty().isset().is_null()和其本身作为参数,下面小段程序做个简要比较 <?php//预定 ...

  7. PHP中empty、isset和is_null的具体区别?

    1.isset()用来检测一个变量是否已声明; 2.empty()用来检测一个变量是否为空如果有如下情况返回真值: 1)空字符串 2)false 3)空数组 4)NULL 5)0 6)0.0 7)un ...

  8. PHP isset()、empty()、is_null()的使用区别详解

    PHP的isset()函数 一般用来检测变量是否设置 格式:bool isset ( mixed var [, mixed var [, ...]] ) 功能:检测变量是否设置 返回值: 若变量不存在 ...

  9. empty、isset、is_null的比较

    直接上代码 <?php $a=0; $b='0'; $c=0.0; $d=''; $e=NULL; $f=array(); $g='\0'; $h=' ';//space $i=true; $j ...

随机推荐

  1. hbase-读操作

    (学习笔记) client和regionServer连接,通过rowkey查找对应的region 多个列簇生成多个storeScaner 每个storeScaner生成一个MemstoreScanne ...

  2. Ubuntu16.04 静态IP设置

    为VMware虚拟机内安装的Ubuntu 16.04设置静态IP地址NAT方式 1.安装环境 VMware 12 Ubuntu 16.04 x86_64 2.在VMware中,配置网络环境 VMwar ...

  3. Mysql必知必会 第一章 了解SQL

    第一章 了解SQL 1.1 数据库基础 1.1.1 什么是数据库 数据库的定义:保存有组织的数据的容器 数据库软件不是数据库,而是DBMS 1.1.2 表 表(Table)的定义:某种特定类型数据的结 ...

  4. ICSE 2018 论文

    仅简单分析自己感兴趣的论文. 9.6 Million Links in Source Code Comments: Purpose, Evolution, and Decay 分析了 source c ...

  5. python学习心得--编码格式篇

    计算机容量单位: 1位 = 1bit: 8bit = 1byte = 1字节 : 1024bytes = 1kbytes =1KB: 1024KB = 1Million Bytes = 1MB = 1 ...

  6. Spring-MVC运行原理

    一. Spring-MVC的对象初始化,即 bean放入context的beanFactory中. 1. 对象的初始化工作主要在org.springframework.web.servlet.Fram ...

  7. xml代码修改图片颜色

    <?xml version="1.0" encoding="utf-8"?> <bitmap xmlns:android="http ...

  8. LoadRunner简单介绍----性能自动化测试工具

    在做性能测试中,我认为技术可以说是武功心法,工具则是一把利剑,有一把好的利剑可以帮助自己更好的完成性能测试工作.在这里简单介绍一下LoadRunner,带大家一起来认识一下这把尚方宝剑. 一.性能测试 ...

  9. linux shell 多个命令一起执行的几种方法

    在命令行可以一次执行多个命令,有以下几种: 1.每个命令之间用;隔开 说明:各命令的执行结果,不会影响其它命令的执行.换句话说,各个命令都会执行, 但不保证每个命令都执行成功. cd /home/Py ...

  10. 第四范式涂威威:AutoML技术现状与未来展望

    以下内容是对AutoML技术现状与未来展望讲座的总结. 1.机器学习定义 <西瓜书>中的直观定义是:利用经验来改善系统的性能.(这里的经验一般是指数据) Mitchell在<Mach ...