php中empty方法,关于php的empty函数
最近在学习php的时候发现在php中进行判空操作的时候使用的是一个empty()函数。刚看的时候觉得这个方法很简单,就是判断变量对应类型的空值,后来在使用的时候发现自己想的太简单了,这个方法还是很有学问的,这里记录一下这个方法的详细用法,以及准备对比整理两个相似的方法isset()以及is_null()方法。
empty()函数
empty()方法的定义以及注释如下:/**
* Determine whether a variable is considered to be empty. A variable is considered empty if it does not exist or if its value
* equals FALSE. empty() does not generate a warning if the variable does not exist.
* @link https://php.net/manual/en/function.empty.php
* @param mixed $var
Variable to be checked.
*
Note: Prior to PHP 5.5, empty() only supports variables; anything else will result in a parse error. In other words,
* the following will not work: empty(trim($name)). Instead, use trim($name) == false.
*
*
* No warning is generated if the variable does not exist. That means empty() is essentially the concise equivalent
* to !isset($var) || $var == false.
*
* @return bool
FALSE if var exists and has a non-empty, non-zero value. Otherwise returns TRUE.
*
* The following things are considered to be empty:
*
*
"" (an empty string)
*
0 (0 as an integer)
*
0.0 (0 as a float)
*
"0" (0 as a string)
*
NULL
*
FALSE
*
array() (an empty array)
*
$var; (a variable declared, but without a value)
*
*
*/
function PS_UNRESERVE_PREFIX_empty($var){};
其实注释已经说得很明白了,这里又要反思自己身上一个不好的习惯了,那就是不习惯看源码。现在的IDE点一下就可以直接跳转去看相应的源码,而自己还习惯于在网上查找,网上的讲解往往很零散,并且每个人在讲解的时候都加了自己的理解与看法,这样反而不利于自己的理解。
好了说了这么多废话,继续回到empty()本身,什么时候一个变量会被判断为‘empty’,也就是empty()会返回true呢?如果一个变量不存在或者这个变量的值等于其类型零值的话,empty()函数就会返回true!。注释中还列出了具体的会被判断为‘empty’的所有情况,可以分为两类:变量不存在或者变量的值为类型零值,即:
(一)变量不存在
包括两种情况:一个变量不存在,即这个变量重来没有被声明过就直接塞给empty函数了;
一个变量只是被声明但是还没有被赋值;// 变量不存在
empty($var1); // return true
// 变量只声明没赋值
$var2;
empty($var2); // return true
(二)变量值为零值
即每种数据类型对应的零值,具体为:int: 0
boolean: false
float: 0.0
string: “” and “0” ;
array: array()
object: null
字符串类型稍特殊一点,”0”也会被判断为empty; 但是两个或者以上的全‘0’字符串又会判断为非空,暂时还没有理解到这样规定的意义所在。
另外php的版本也会对empty()函数产生影响,注释里面说php5.5之前empty()方法只能检验变量,对常量使用的话会产生错误,而在php5.5之后也可以检验常量,这点等换了电脑之后再验证。
isset()函数
在上面的注释中有这样一句话:
No warning is generated if the variable does not exist. That means empty() is essentially the concise equivalent to !isset($var) || $var == false.
意思就是说 empty() 等价于 !isset($var) || $var == false
先看一下函数的定义以及注释:/**
*
Determine if a variable is set and is not NULL.
*
If a variable has been unset with unset(), it will no longer be set. isset() will return FALSE if testing a variable
* that has been set to NULL. Also note that a null character (" ") is not equivalent to the PHP NULL constant.
*
If multiple parameters are supplied then isset() will return TRUE only if all of the parameters are set.
* Evaluation goes from left to right and stops as soon as an unset variable is encountered.
* @link https://php.net/manual/en/function.isset.php
* @param mixed $var
The variable to be checked.
* @param mixed $_ [optional]
Another variable ...
* @return bool Returns TRUE if var exists and has value other than NULL, FALSE otherwise.
*/
function PS_UNRESERVE_PREFIX_isset($var, ...$_){};
注释说的很明白了,isset()用来检测一个变量是否已经声明并且其值不为NULL。有以下几种情况:若变量不存在,返回 FALSE
若变量存在并且值为NULL,返回 FALSE
若变量存在且值不为NULL,返回 TUREisset($var1); //return false
$var2 = null;
isset($var2); //return false
$var3 = 0; // 赋值过
isset($var3); // return true
unset($var4); // 释放变量
isset($var4); // return false
并且isset()支持同时检查多个变量,只有当每一个变量都符合上述返回true的条件的时候,整个方法才返回TRUE,也就是一个&&的关系。
这里要强调的一点就是isset()只适用于变量,用来检验常量的会报错。要检验常量可以使用defined()方法。
is_null()函数
从函数意义上is_null()函数就是isset()方法的反函数,对比理解就行了。
从用法上is_null()函数只能作用于已经声明的变量,对未声明的变量使用会报错的,这和isset()方法有差别。/**
* Finds whether a variable is &null;
* @link https://php.net/manual/en/function.is-null.php
* @param mixed $var
* The variable being evaluated.
*
* @return bool true if var is null, false
* otherwise.
* @since 4.0.4
* @since 5.0
*/
function is_null ($var) {}
php中empty方法,关于php的empty函数相关推荐
- php中change方法的使用,jQuery.change()函数的使用详解
change()函数用于为每个匹配元素的change事件绑定处理函数.该函数也可用于触发change事件.此外,你还可以额外传递给事件处理函数一些数据. change事件会在文本内容或选项被更改时触发 ...
- java empty isempty_Java中isEmpty方法如何使用?
展开全部 isEmpty()方法有很多类都有,对于String类,62616964757a686964616fe4b893e5b19e31333264656134它是Java 6.0引入的, 当且仅当 ...
- java的empty_Java Stack empty()方法与示例
堆栈类empty()方法empty()方法在java.util包中可用. empty()方法用于检查此堆栈是否为空. empty()方法是一个非静态方法,只能通过类对象访问,如果尝试使用类名称访问该方 ...
- string empty java,在C#中,我应该使用string.Empty还是String.Empty或“”来初始化字符串?...
在C#中,我想用一个空字符串初始化一个字符串值. 我应该怎么做? 正确的方法是什么,为什么? string willi = string.Empty; 要么 string willi = String ...
- jquery 删除html属性值,使用jQuery的remove()和empty()方法删除Html元素及子元素和内容...
01第1节. jQuery删除元素和内容 #JavaScript#在jQuery中,不仅可以在已有Html页面中添加新的Html元素,还可以删除已有的Html元素. 在jQuery中有2个方法可以完成 ...
- java stack empty_java.util.Stack.empty()方法实例
全屏 empty()方法是用来测试堆栈是否为空. 声明 以下是java.util.Stack.empty()方法的声明.public boolean empty() 参数NA 返回值 该方法调用返回t ...
- jquery之empty()方法详解
empty()函数用于清空每个匹配元素内的所有内容. empty()函数将会移除每个匹配元素的所有子节点(包括文本节点.注释节点等所有类型的节点). 该函数属于jQuery对象(实例). 语法 jQu ...
- php的empty方法怎么用js写,jQuery.empty() 函数用法详解
empty()函数用于清空每个匹配元素内的所有内容. empty()函数将会移除每个匹配元素的所有子节点(包括文本节点.注释节点等所有类型的节点). 该函数属于jQuery对象(实例). 语法 jQu ...
- PHP中魔术方法的用法
PHP中魔术方法的用法 /** PHP把所有以__(两个下划线)开头的类方法当成魔术方法.所以你定义自己的类方法时,不要以 __为前缀. * */// __toString.__set.__get__ ...
最新文章
- 计算机学院杨洋,美国莱特州立大学吴志强教授访问计算机科学与技术学院
- 关于struts2的开始学习
- 转:Ubuntu中安装和配置 Java JDK,并卸载自带OpenJDK(以Ubuntu 14.04为例)
- 应该知道的Linux技巧
- RNN以及LSTM的介绍和公式梳理
- 利用类的反射导入excel示例
- PHP-代码审计-命令执行
- 删除对于job收缩日志失败547_MySQL中常见的几种日志
- js 图片压缩上传(base64位)以及上传类型分类
- 换一种方式“写代码 编程序“,为自己的程序生涯找条新路
- Hibernate 系列 02 - Hibernate介绍及其环境搭建
- sql 没有调试 菜单_关于ThinkPHP5.1+的Log无法记录SQL调试记录的小经历
- odoo pivot中去掉求和_评比算分,去掉最高分和最低分算平均,PLC怎样编程实现?...
- React 进修之路(1)
- Helm 安装 nginx-ingress 的方法
- Cannot load supported formats: Cannot run program svn: CreateProcess error=2, μ
- Python数据分析与应用(一)
- HTML iframe设置背景透明
- matlab仿真整流电路设计,整流电路MATLAB仿真实验
- HEER-Easing Embedding Learning by Comprehensive Transcription of Heterogeneous Information Networks