第四章:第8节 PHP数据类型-NULL与变量有关函数

更新于:2019-07-09 14:53:37

这节学习几个跟变量有关系的函数:


var_dump:


1.png


在手册里有详细介绍,可以查看一个变量是什么数据类型,这个函数不用于写业务逻辑、业务功能,它主要是帮我们写代码时起调试作用。这个函数是非常有用的,可以同时查看多个函数。


1.png


效果:


1.png

unset:


1.png


unset其实不能算一个函数,它只是一个PHP语句,它没有返回值,它的作用是删除一个变量。


1.png

效果:

1.png

变量$v3被unset以后,就变成了空值NULL。


拓展:


$test = "aaa";
$abc = &$test;
unset($test);
echo $abc;


结果打印$abc的值是“aaa”。

原因是:变量$test指向内存(应该是堆内存)中的一个区域(假设是A区域,这个区域用来表示“aaa”值),$test引用传值给$abc,同时两个变量指向A区域,unset删除的只是$test变量,而并不是A区域,所以$abc的值还是“aaa”。


什么是NULL?


null也是PHP的一种数据类型,顾名思义是空的意思,什么都没有。


通过C语言我们来了解NULL。在C语言里,有种变量类型叫指针变量,它的值存的是内存地址,一个指针变量被赋值NULL,这个变量存的内存地址是0x00000000,一个不能被使用的地址。PHP变量被赋值NULL,其实就是引用赋值,给它赋值0x00000000的内存地址。


在下列情况下一个变量被认为是 NULL

  • 被赋值为 NULL。

  • 尚未被赋值。

  • unset()


null 类型只有一个值,就是大小写不敏感的关键字 NULL(你可以写成NULL,也可以写成null)。 


empty:


1.png


主要用它检测一个变量是否为空,返回值是布尔值。为空返回真true,不为空返回假false。


empty严格意义上也不算一个函数,它只能检测一个变量,不能直接检测字符串、数字或函数返回值。


1.png

效果:


1.png

20行报了一个错误,把20行注释掉


1.png

都是布尔值false,三个变量都不是空。


楠神说下什么样的数据empty才会被认定为空:


整数型和浮点型等于0会被认为空,其他为不空

字符串''会被认为空,其他为不空

布尔型false会被认为空,其他为不空

空类型NULL会被认为空


empty配合if判断语句,在业务逻辑上用得很多。


isset:


1.png


isset和empty有很多相似的地方,它检测一个变量是否设置,返回布尔值。设置了返回真,没设置返回假。


isset严格意义上也不算一个函数,它只能检测一个变量,不能直接检测字符串、数字或函数返回值。


怎么样变量才算被设置?主要是看变量是不是等于NULL值,一个变量没有被定义赋值,被unset了,它就算没有被设置。变量等于0或者false,也算是被设置。


1.png

看效果:

1.png


在PHP手册附录有个php类型比较表:


1.png

在程序功能开发时,empty常用于判断变量的值是不是等于0,是不是空字符;isset常用于判断有没有这个变量。


额外说明:empty、isset函数的参数只能是变量,楠神在开发过程中发现一个有意思的现象,举个例子:

isset( explode('|','1|2|s')[2] );empty、isset这样去检测一个函数的返回值就不会报错。


因为楠神还没讲到数组,有很多人看不懂上面的代码。explode('|','1|2|s')是一个函数,它的返回值是数组,explode('|','1|2|s')[2]返回数组中下标为2的值。


现在看不懂没关系,后边学完数组就很容易明白什么意思了。



gettype:


获取一个变量的类型名称,结果是一个单词,这个函数其实用的不多,用法很简单,不做详细介绍了。


本节学习代码》》》