# 变量操作 [TOC] ## 获取变量值 当创建一个变量并且赋值后,此时我们应该如何去获取这个变量的值呢?PHP为我们提供了几个函数与一个语句。 echo,print\_r,var\_dump都可以打印变量,他们的区别是什么呢? ``` <?php echo $a; # 只能输出字符串的内容 pinrt_r($a); # 可以打印出复杂类型变量的值(如:数组,对象) var_dump($a); # 输出变量的内容、类型或字符串的内容、类型、长度 ``` ## 可变变量 可变变量是指该变量的名称由另外一个变量的值来确定。换句话,**一个变量的变量名又是一个变量的情况** ``` <?php $a = 'b'; $b = 'c'; $c = 100; echo $$$a; # 解析:我们可以先把前面二个$$不看那么$a='b'加上$$就等于$$b,$$b=$c,$c=100;结果为:100 ``` ## 变量操作三剑客 isset():判断变量是否存在,若变量不存在则返回FALSE,若变量存在且其值为NULL,也返回FALSE,若变量存在且值不为NULL,则返回TURE,isset()只能用于变量,传递任何其它参数都将造成解析错误 empty():判断变量是否为空,如果是非空或非零的值,则 empty() 返回 FALSE。换句话说,“”、0、0.0、“0”、NULL、FALSE、array()、未赋值变量,则返回 TRUE,empty()只能用于变量,因为传递任何其它参数都将造成解析错误 unset():删除变量,使用 unset() 销毁一个变量后,变量的值将变成NULL。使用 isset() 测试的结果为false >[danger] 注意:删除变量,只是删除变量名,并且断开到变量值之间的引用而已,而变量值还在,该变量值将变成垃圾,由系统自动进行回收处理,PHP在执行完毕后自动回收 ``` <?php $a = 0; if(isset($a)) { echo '存在'; }else{ echo '不存在'; } # 结果:存在,0 != NULL 只有值为NULL才返回false if(empty($a)) { echo '真'; }else{ echo '假'; } # 结果:真 非空或者非零才返回false ```