
2.3 PHP变量
变量是可以随时改变的量,主要用于存储临时数据,是编码程序中尤为重要的一部分。在定义变量的时候,通常要为其赋值,所以在定义变量的同时,系统会自动为该变量分配一个存储空间来存储变量的值。
2.3.1 声明变量
1.变量的定义
在PHP中变量的语法格式如下:

2.变量的命名规则
1)在PHP中的变量名是区分大小写的。
2)变量名必须是以符号“$”开始。
3)变量名开头可以以下划线开始。
4)变量名不能以数字字符开头。
5)变量名可以包含一些扩展字符(如重音拉丁字母),但不能包含非法扩展字符(如汉字字符和汉字字母)。
【例2-3】命名举例。
正确的变量命名:

错误的变量命名:

2.3.2 变量赋值
变量的赋值有三种方式。
(1)直接赋值
直接赋值就是使用“=”直接将值赋给某变量,例如:

运行结果为:

上例中分别定义了$name变量和$number变量,并分别为其赋值,然后使用echo输出语句输出变量的值。
(2)传值赋值
传值赋值就是使用“=”将一个变量的值赋给另一个变量,例如:

运行结果为:

在上面的例子中,先定义变量a并赋值为18,然后又定义变量b,并设置变量b的值等于变量a的值,此时变量b的值也为18。
(3)引用赋值
引用赋值是一个变量引用另一个变量的值,例如:


运行结果为:

仔细观察一下,“$b=&$a”中多了一个“&”符号,这就是引用赋值。当执行“$b=&$a”语句时,变量b将指向变量a,并且和变量a共用同一个值。
当执行“$b=28”时,变量b的值发生了变化,此时由于变量a和变量b共用同一个值,所以当变量b的值发生变化时,变量a也随之发生变化。
2.3.3 变量作用域
变量的作用域是指变量在哪些范围能被使用,在哪些范围不能被使用。PHP中分为3种变量作用域,分别为局部变量、全局变量和静态变量。
1.局部变量
局部变量就是在函数的内部定义的变量,其作用域是所在函数。
【例2-4】自定义一个名为example()的函数,然后分别在该函数内部及函数外部定义并输出变量a的值,具体代码如下:

运行结果为:

2.全局变量
全局变量是被定义在所有函数以外的变量,其作用域是整个PHP文件,但是在用户自定义函数内部是不可用的。想在用户自定义函数内部使用全局变量,要使用global关键词声明。
【例2-5】定义一个全局变量,并且在函数内部输出全局变量的值。


运行结果为:

3.静态变量
通过对全局变量的认识,可以知道在函数内部定义的变量,在函数调用结束后,其变量将会失效。但有时仍然需要该函数内的变量有效,此时就需要将变量声明为静态变量,声明静态变量只需在变量前加“static”关键字即可。
【例2-6】分别在函数内声明静态变量和局部变量,并且执行函数,比较执行结果有什么不同。

运行结果为:

2.3.4 可变变量
可变变量是一种独特的变量,这种变量的名称是由另外一个变量的值来确定的,声明可变变量的方法是在变量名称前加两个“$”符号。
声明可变变量的语法如下:

【例2-7】下面举例说明声明可变变量的方法,具体代码如下:

运行结果为:

2.3.5 外部变量
在PHP中,把程序中定义的变量叫内部变量,而把表单中定义的变量(即控件名称)、URL中的参数名统称为外部变量,其值通过预定义变量$_POST、$_GET、$_REQUEST获得。比如:带参数超链接<a href="php文件名?参数名=值&参数名=值">。
① $_POST["表单变量"]:取得从客户端以POST方式传递过来的表单变量的value值。
② $_GET["表单变量"]:取得从客户端以GET方式传递过来的表单变量的value值。
③ $_REQUEST["表单变量"]:取得从客户端以任意方式传递过来的表单变量的value值。
④ $_REQUEST["参数名"]:取得从客户端传递过来的参数值。
【例2-8】利用POST和GET方式提交表单,演示外部变量的使用。


运行结果为:

2.3.6 变量或常量数据类型查看函数
PHP为变量或常量提供了常看数据类型的函数:gettype()函数和var_dump()函数。
1.gettype()函数
语法格式:string gettype(mixed var)
函数功能:gettype()函数需要变量名(带$符号)或常量名作为参数,该函数返回变量或常量的数据类型,这些数据类型包括integer、double、string、array、object、unknown type等。
2.var_dump()函数
语法格式:void var_dump(mixed var)
函数功能:var_dump()函数需要传递一个变量名(带$符号)或常量名作为参数,该函数可以得到变量或常量的数据类型以及对应的值,并将这些信息输出。
函数说明:调试程序时,经常使用var_dump()函数查看变量或常量的值、数据类型等信息。
【例2-9】变量或常量数据类型查看函数应用。


运行结果如下:
