php true false isset empty is_nu

2017-11-26  本文已影响13人  宋大肿

php里面的true和false,以及isset、empty、is_null比较容易让人模糊,写一下,记录我的理解。

switch(true){
case 1: 
echo '我是1';
case ['']: 
echo '我是数组';
case true:
echo '我是true';
case 'true': 
echo :'string true';
default: 
echo ' over' ;
}  

代码执行结果会是 全都被输出。

php变量和bool类型的数据做比较的时候,将会被转换成true 或者false

那么0、false、null或者unset之后的变量将会被系统认为是false。
除此之外都将会被认为是true。
注意 以上代码中:[''],其实是创建一个匿名数组,和bool进行比较的时候,将会被系统认为是true。

false在网页中是不被打印的。

isset()

判断变量是否已经被定义以及判断该变量是否被设置(也就是赋值)。
当变量不存在或者是当变量被赋值为null,或者压根没有被赋值的情况下,返回false。
其余情况返回true,当然外部无法访问类内部private修饰的变量。
''、0、false、array()也被认为是已经设置。

empty()
判断变量是否为空。
0、false、null、array()、unset()、''、没有初始化这些情况下,empty函数都将返回true也就是1。
其余情况返回false。

也就是 只要该变量等于false,empty就将返回true。

is_null()

判断变量是否是空。
只有在变量未初始化就使用以及初始化为null以及变量根本不存在的情况下,才会返回true。

总结

php遵循c语言的变量存储规则。
如果我们认为php是一个只有true和false的世界:

  1. 0->false
  2. false->false
  3. ''->false
  4. array()->false
  5. null->false
  6. unset()->false
  7. 变量未初始化就调用->false
  8. 1->true
  9. 其余情况->true

empty认为一切是false的玩意,都是空,都会给调用者返回true。
is_null认为未初始化的变量,不存在的变量,值为null的变量 都是true。
isset认为当变量不存在或者是当变量被赋值为null,或者压根没有被赋值,以及被unset之后的变量,属于未被设置的范畴,将返回0,false。

上一篇下一篇

猜你喜欢

热点阅读