一. 变量检查 [ empty(), isset(), is_null() 的区别 ]
在日常开发中,我们经常需要判断变量的值,如我们需要判断某个方法里面的实参是否是“空”,而我们经常会用到empty,isset,is_null等函数。
1.empty() : 判断变量是否是零是否是空,是则返回true,相反则返回false.
需要注意的是,以下几种类型都会被列入“零”和“空”的范畴.
- "" (空字符串)
- 0 (作为整数的0)
- 0.0 (作为浮点数的0)
- "0" (作为字符串的0)
NULL
FALSE(布尔值)
- array() (空数组)
- $var; (一个声明了,但是没有值的变量)
2. isset(): 函数用于检测变量是否已设置并且非 NULL。
如果已经使用 unset() 释放了一个变量之后,再通过 isset() 判断将返回 FALSE。
若使用 isset() 测试一个被设置成 NULL 的变量,将返回 FALSE。
同时要注意的是 null 字符("\0")并不等同于 PHP 的 NULL 常量。
3. is_null() : 检测变量是否是null
二. 生成唯一值
在另外一些应用场景里面,我们经常需要生成一些唯一值。而在PHP中有一些函数的功能就是生成唯一值。
比如:uniqid() : 函数基于以微秒计的当前时间,生成一个唯一的 ID [一微秒等于百万分之一秒],这个函数有两个参数,第一个参数是一个前缀,这个参数可以很好的避免在不同的主机不同的程序中 uniqid函数在同一微秒里生成相同值的问题。第二个参数是一个布尔值,当这个参数为true时,uniqid就会在生成的值中拼接一个随机数,以此减少重复率。但网上一些文章称第二个参数带来的随机性还不够强,可以采用以下这种写法生成唯一值
uniqid(mt_rand(), true)
如果你的PHP版本高于7.1.0的话,可以使用session_create_id()这个函数,因为在高并发的场景下,uniqid()也会产生重复,但是session_create_id则不会产生重复(网上的一些说法)