PHP empty() isset() is_null() 区别与性能比较
is_null(), empty(), isset(),这几个函数以及 == ” , == array() 会在实际操作中经常用到。因为功能很类似,可能会忽视了他们的区别,一不小心就会给工作带来很大的麻烦。下面将这几种结构列出来,供自己和大家参考,鉴于表述的准确性,部分解释来自英文原版手册,避免中文手册的更新不及时以及翻译不当等问题。
is_null()
is_null(),bool,当参数满足 null 的三种情况时, is_null() 将返回 TRUE。
null类型,以下情况将被认定为 NULL:
it has been assigned the constant NULL.
it has not been set to any value yet.
it has been unset().
source:http://cn2.php.net/manual/en/language.types.null.php
isset()
isset(),bool,用于判定参数是否被设定并且不是 NULL。参数只能是变量。
如果没有设置变量,或者变量被 unset() 掉,或者变量值为 NULL ,返回 FALSE,其它情况返回 TRUE。即如果不是 NULL 就属于 isset 的范畴了,这一点和 is_null() 函数正好相反。
如果传递多个参数,将取交集。即所有参数全部符合 isset() 时才返回 TRUE。
ps:defined(),bool,用于检查常量是否被设置。
source:http://cn2.php.net/manual/en/function.isset.php
empty()
empty(),bool, 主要用于判断变量是否为空。参数只能是变量。
如下情况将被判定位空:
代码如下 | 复制代码 |
“” (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 $var; (a variable declared, but without a value in a class) |
注:如果参数是未设置的变量,变量将被认定为 NULL,不会报错,返回 TRUE。
但是注意在 5.0.0 之后,Objects with no properties are no longer considered empty.
source:http://cn2.php.net/manual/en/function.empty.php
判定是否为空的方式还有 == ”,== array() 等,比较有局限性,都没什么好说的。
测试的类型如下:
代码如下 | 复制代码 |
<?php ?> empty() 首先是empty的var_dump输出:
程序输出为: 从代码中可以看出,只要数据类型是否为空或假,empty()就输出true。 再看看isset的输出: // 输出 可以看出isset()只能用来判断是否为NULL和未定义。 最后是is_null的输出: // 输出 |
is_null 字面意思了。
由此可见 empty() 可以用来判定所有的数据类型是否为空或假,而 is_null 与 isset 基本一样,只能用来判断是否为NULL和未定义。
概括总结isset,empty,is_null区别:
刚才介绍的:检查变量,以及参数类型,这个是这3个函数不同之处的基础,也是最容易被忽视的。看到网上有很多对这个3个函数进行比较文章。很少涉及这些。下面我要说的,是在都检查已存在变量情况下,不同之处。
代码如下 | 复制代码 |
<?php $a=100; $b=""; $c=null; //isset检查 echo "isset","$a=$a",isset($a)?"define":"undefine","rn"; echo "isset","$b=$b",isset($b)?"define":"undefine","rn"; echo "isset","$c=$c",isset($c)?"define":"undefine","rn"; unset($b); echo "isset","$b",isset($b)?"define":"undefine","rn"; $b=0; echo "rnrn";
//empty检查 echo "empty","$a=$a",!empty($a)?"no empty":"empty","rn"; echo "empty","$b=$b",!empty($b)?"no empty":"empty","rn"; echo "empty","$c=$c",!empty($c)?"no empty":"empty","rn"; unset($b); echo "empty","$b",!empty($b)?"no empty":"empty","rn"; $b=0; echo "rnrn";
//is_null检查 echo "is_null","$a=$a",!is_null($a)?"no null":"null","rn"; echo "is_null","$b=$b",!is_null($b)?"no null":"null","rn"; echo "is_null","$c=$c",!is_null($c)?"no null":"null","rn"; unset($b); echo "is_null","$b",is_null($b)?"no null":"null","rn"; |
纯英文
代码如下 | 复制代码 |
if(preg_match("/^[a-z]*$/i", "fdsFDfd")) { echo "全字母 "; } |
纯汉字
代码如下 | 复制代码 |
比如: |
汉英混合
用户名:包括英文小写、汉字、数字、下划线,不能全部是数字,下划线不能在末尾
代码如下 | 复制代码 |
/^[a-z0-9_u4e00-u9fa5]+[^_]$/g utf-8下 preg_match("/^[a-z0-9_x80-xff]+[^_]$/g",$a);gbk下: preg_match("/^[a-z0-9_".chr(0xa1)."-".chr(0xff)."]+[^_]$/",$a) |
utf-8编码
代码如下 | 复制代码 |
|
gbk编码
代码如下 | 复制代码 |
function gbk_str($str){ |
数字中文汉字
代码如下 | 复制代码 |
$username=$_REQUEST['username']; |
原理,就是生成mt_rand随机种子来生成,然后利用相关函数进行读取操作
例1
代码如下 | 复制代码 |
/** /** echo hideString(); |
例2 生成注册码/序列号
以下为引用的内容:
代码如下 | 复制代码 |
<?php /* 配置 */ /* 生成随机数字串 */ /* 过滤重复串并且提取最终需要的CD-Key数量 */ /* 把最终的CD-Key写入文件 */ echo "Create $key_total key succeed!"; /* 随机函数 */ ?> |
执行上面的程序就会生成cd_key.txt文件,里面包含了类似下面的验证码:
以下为引用的内容:
573-225-374-118
691-553-280-280
969-594-607-211
251-575-776-563
280-289-739-533...
这样,就完整的达到了我们的目的,你也可以把以上随机串保存到数据库里,方便调用。灵活设置以上变量,你能够生成16位、20位的验证码。如果你有兴趣,也可以写类似 XDF8F-ADE89-D0J5C-4RTFG之类的验证码
字符组合
代码如下 | 复制代码 |
for($k=2;$k<5;$k++) |
implode() 函数把数组元素组合为一个字符串。
注释:implode() 可以接收两种参数顺序。但是由于历史原因,explode() 是不行的。你必须保证 separator 参数在 string 参数之前才行。
例子
代码如下 | 复制代码 |
<?php $arr = array('Hello','World!','Beautiful','Day!'); echo implode(" ",$arr); ?> |
输出:
Hello World! Beautiful Day!
explode() 函数把字符串分割为数组。
注释:参数 limit 是在 PHP 4.0.1 中加入的。
注释:由于历史原因,虽然 implode() 可以接收两种参数顺序,但是 explode() 不行。你必须保证 separator参数在 string 参数之前才行。
例子在本例中,我们将把字符串分割为数组:
代码如下 | 复制代码 |
<?php 输出: Array |
一个不错的php分割合并两个字符串的函数
代码如下 | 复制代码 |
/**
|
今天要讲的这个例子,需求是这样的。得知某个日期时间,
如:2012-04-25 10:10:00
我要在这个日期时间的基础上加上5个月并返回处理后的日期
结果:2012-04-25 10:10:00 加5个月等于 2012-09-25 10:10:00
结合PHP函数date()与strtotime()两个函数来实现大致也是这个意思,
代码如下 | 复制代码 |
<?php |
常用的计算时间
代码如下 | 复制代码 |
<?php |
输出结果
今天:2013-06-07
今天:2008-06-18
昨天:2013-06-06
明天:2013-06-08
一周后:2013-06-14
一周零两天四小时两秒后:2013-06-16 18:18:29
下个星期四:2013-06-13
上个周一:2013-06-03
一个月前:2013-05-07
一个月后:2013-07-07
十年后:2023-06-07
这些再看一些日期加减函数
代码如下 | 复制代码 |
//获取当天的星期(1-7) //间隔几个星期之前或之后的时间 |
相关文章
- 在本篇文章里小编给大家分享的是一篇关于python中numpy.empty()函数实例讲解内容,对此有兴趣的朋友们可以学习下。...2021-02-06
- 最近在工作中遇到了一个问题,通过查找相关资料才得知原因是因为返回结果的问题,下面这篇文章主要给大家介绍了关于lua读取redis数据的null判断的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下...2020-06-30
- 今天要讲到了是关于empty函数的用法,和等空有什么区别,以及用它来操作数组时是不是返回正常的值,有需要的朋友可以参考一下。 代码如下 复制代码 ...2016-11-25
- isset和is_null的功能几乎完全相反的一样.. 是不是isset就是一个is_null的相反的别名? 诶, 要说区别, 那还真的是很多~ 一切的不同都是因为: is_null是函数, isset是...2016-11-25
php Note: empty() only checks variables as anything错误
今天在利用empty()函数判断一个变量是否为null是发现提示Note: empty() only checks variables as anything else will result in a parse error. In other words, th...2016-11-25- isset函数我们多用于判断变量是不是存在了,如isset($a)了,如果存在返回 true,否则返回false了,下面我们一起来看看。 isset函数是检测变量是否设置。 格式:bool isset...2016-11-25
PHP empty() isset() is_null() 区别与性能比较
在php中empty() isset() is_null()三个函数都是判断是否为空的情况,但是如果我个要具体的深入去了解这个三个函数发现还是有许多的区别,下面我来给大家总结了一下。...2016-11-25php empty()出错,Fatal error: Can’t use function return
今天在利用empty函数是出现Fatal error: Can’t use function return value in write context错误提示,觉得很怪, 这个函数我可是使用了N久了今天怎么回事,下面大家来看...2016-11-25php中empty(), is_null(), isset()函数区别
在php中empty(), is_null(), isset()三个函数都可以用来判断变量是否存在的,那么empty(), is_null(), isset()之间的区别在哪里呢,如果你不明白我一起来看看下文。...2016-11-25- empty,isset,is_null 这几个函数时候,遇到一些问题。甚至给自己的程序带来一些安全隐患的bug。很多时候,对于isset,empty都认为差不多。因此开发时候,就没有注意,一段作为...2016-11-25
- empty 和 is_null有什么区别? bool empty ( mixed $var ) 如果 var 是非空或非零的值,则 empty() 返回 FALSE。换句话说,""、0、"0"、NULL、FALSE、array()、var $var...2016-11-25
php array_key_exists() 与 isset() 的区别
这篇文章主要介绍了php array_key_exists() 与 isset() 的区别的相关资料,需要的朋友可以参考下...2016-11-01php中isset(Null)与is_null() empty()用法比较
在很多的程序员眼中php中的isset(Null)与is_null() empty()三个函数用法不太清楚了,下面小编就为各位介绍一下吧,希望可以给大家带来帮助。 但有时候会发现在php中...2016-11-25php empty(), isset(), is_null()函数用法实例
在php中empty(), isset(), is_null()三个函数在很多朋友看来都差不多,但我们简单想一下好像又不同,一个空值,一个是否是一个变量,是否为null,下面我来举例来说明。 很...2016-11-25- 本文主要介绍了PHP isset()与empty()的使用区别。具有很好的参考价值,下面跟着小编一起来看下吧...2017-02-18
- empty 判断一个变量是否为“空”,isset 判断一个变量是否已经设置。正是这种所谓的“顾名思义”,令我开始时走了些弯路:当一个变量值等于0时,empty()也会成立(True) emp...2016-11-25
- 使用empty()判断数字0的时候,empty()也会返回true,就是说如果你的变量有可能出现数字0这个变量,要使用isset()来判断会好一些!! 从表面上看,很容易误解empty()函数是判...2016-11-25