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的世界:
- 0->false
- false->false
- ''->false
- array()->false
- null->false
- unset()->false
- 变量未初始化就调用->false
- 1->true
- 其余情况->true
empty认为一切是false的玩意,都是空,都会给调用者返回true。
is_null认为未初始化的变量,不存在的变量,值为null的变量 都是true。
isset认为当变量不存在或者是当变量被赋值为null,或者压根没有被赋值,以及被unset之后的变量,属于未被设置的范畴,将返回0,false。
网友评论