特别提示:这三个函数仅适用于变量判断,不要直接到用字面量上面。
一、is_null()函数的功能,参数,返回值
1.功能: is_null() — 检测变量是否为 NULL;
2.语法: bool is_null ( mixed $var )
如果 $var 是 null 则返回 TRUE,否则返回 FALSE。
查看 NULL 类型获知变量什么时候被认为是 NULL,而什么时候不是。
参数描述: mixed 说明$var参数可以接受多种不同的(但不一定是所有的)类型。
3.技术细节
* 返回值:
* 1.变量已声明但未初始化,默认为null值
* 2.变量显示赋值为null
* 3.unset()销毁后,变量为null值
* 总结:变量不存在/没赋值/值为null,则返回true 。
适用PHP 版本:PHP 4 >= 4.0.4, PHP 5, PHP 7
<?php $val1; //已声明,但未赋值 $val2 = null; //直接用null初始化变量 $val3 = 'php'; //赋值变量 unset($val3); //彻底销毁变量 @var_dump(is_null($val1) ? true : false); //显示true var_dump(is_null($val2) ? true : false); //显示true @var_dump(is_null($val3) ? true : false); //显示true echo '<hr>'; var_dump(is_null('')); //注意:空字符串返回false ?>
点击 "运行实例" 按钮查看在线实例
二、empty()函数的功能,参数,返回值
1.功能: empty() — 检查一个变量是否为空
2.语法: bool empty ( mixed $var )
判断一个变量是否被认为是空的。当一个变量并不存在,或者它的值等同于FALSE,那么它会被认为不存在。如果变量不存在的话,empty()并不会产生警告。
参数描述: 在 PHP 5.5 之前,empty() 仅支持变量;任何其他东西将会导致一个解析错误。换言之,下列代码不会生效: empty(trim($name))。 作为替代,应该使用trim($name) == false.
没有警告会产生,哪怕变量并不存在。 这意味着 empty() 本质上与 !isset($var) || $var == false 等价。
3.技术细节
* 返回值:当$var存在,并且是一个非空非零的值时返回 FALSE 否则返回 TRUE.
备注:以下的值被认为是空的:
"" (空字符串)
0 (作为整数的0)
0.0 (作为浮点数的0)
"0" (作为字符串的0)
NULL
FALSE
array() (一个空数组)
$var; (一个声明了,但是没有值的变量)
适用PHP 版本:PHP 4 >= 4.0.4, PHP 5, PHP 7
* 总结:
* 1. 如果一个变量不存在,它即是空,也是null,用is_null() / empty()都可以判断
* 2. 如果一个变量存在,但它的值对运行结果无影响,则视为空
* 3. null一定是空,但空不一定是null,因为它可能是空值或0或false
思考: 判断用户是否在文本框输入了内容,应该用is_null()还是empty()?
* 答案: 必须用empty(),不能用is_null()
* 原因: 因为文本框的value值默认为空字符串,即 value = '',已被赋值了,只是空值罢了
* 所以,is_null()仅能检查值为null或没有,必须用empty()才可以
<?php $str1 = ''; //空字符串 $str2 = []; //变量值是空 $str3 = '0'; //字符串‘0’ $str4 = 0; //整数0 $str5 = null; //变量为空 $str6 = false; //布尔值为false $str7 = 'peter zhu'; //有内容的字符串 $str8=0.0 //浮点数0 echo '<hr>'; var_dump(empty($str1) ? true : false); //空字符串,返回true var_dump(empty($str2) ? true : false); //空数组,返回true var_dump(empty($str3) ? true : false); //字符型数字0 ,返回true var_dump(empty($str4) ? true : false); //数字0,返回true var_dump(empty($str5) ? true : false); //null值,返回true var_dump(empty($str6) ? true : false); //布尔false,返回true var_dump(empty($str7) ? true : false); //有值且不为空,返回false var_dump(empty($str8) ? true : false); //浮点数0,返回true ?>
点击 "运行实例" 按钮查看在线实例
三、isset()函数的功能,参数,返回值
1.功能: isset() — 检测变量是否已设置并且非 NULL
2.语法: bool isset ( mixed $var [, mixed $... ] )
检测变量是否设置,并且不是 NULL。
参数描述:
如果已经使用 unset() 释放了一个变量之后,它将不再是 isset()。若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。同时要注意的是 null 字符("\0")并不等同于 PHP 的 NULL 常量。
如果一次传入多个参数,那么 isset() 只有在全部参数都以被设置时返回 TRUE 计算过程从左至右,中途遇到没有设置的变量时就会立即停止。
3.技术细节
isset()是null的取反操作;变量已经存在,并且它的值不为null,返回true,否则为false
isset() 只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测常量是否已设置,可使用 defined() 函数。
适用PHP 版本:PHP 4 >= 4.0.4, PHP 5, PHP 7
<?php $domain = 'www.php.cn'; $name = null; $job; echo '<hr>'; var_dump(isset($var)); // 未定义变量,返回false var_dump(isset($domain) ? true : false); // 变量已申明,且不为Null,返回true var_dump(isset($name) ? true : false); // 变量已申明,但为Null,返回false var_dump(isset($job) ? true : false); //变量已申明未赋值,并不报错,与is_null不同,返回false ?>
点击 "运行实例" 按钮查看在线实例
四、总结:
* 1. 变量有二种状态: 已声明, 未声明
* 2. 已声明的变量也有二种状态: 已赋值(初始化), 未赋值(未初始化)
* 3. 变量可能会被赋值类型: null, 空值, 非空值
* 3.1: null值: is_null()
* 3.2: 空值: empty()
* 3.3: 空值或非空值: isset()
*
* 4基本使用原则:
* 4.1. 对于未声明的变量只能使用isset()进行判断
* 4.2. 对于已声明的变量,为空判断用empty(),是否初始化判断用is_null()
*/
<?php //第一种场景: 变量未声明 //$a未声明 var_dump(isset($a) ? true : false); //不报错,返回false表示未声明 //实例:在分页显示数据的时候,如果当前的url中有分页变量page,则输出指定页,否则就默认输出第一页数据 $name = isset($_GET['page']) ? $_GET['page'] : 1; //is_null会给出警告,并自动执行 $a = null, 所以会返回true var_dump(is_null($a) ? true : false); //因为未声明的变量会自动初始化为null,而对于值为null的变量,empty()会认为是空,所以返回true var_dump(empty($a) ? true : false); echo '<hr color="blue">'; // 第二种场景: 变量已声明 $a = 'www.php.cn'; $b = ''; $c = null; var_dump(isset($a)); //有无判断 var_dump(empty($b)); //非空判断 var_dump(is_null($c)); //null ?>
点击 "运行实例" 按钮查看在线实例
//初始化变量的原则:
//1.在预知变量类型的情况下
//$num = 0; //数值
//$userName = ''; //字符串
//$isPass = false; //布尔
//$books = []; //数组
//$student = null; //对象
//2.不确定变量最终会保存什么值,建议用null进行初始化
五、手抄作业