![PHP+MySQL Web应用开发教程](https://wfqqreader-1252317822.image.myqcloud.com/cover/889/33892889/b_33892889.jpg)
2.3 PHP变量
变量是可以随时改变的量,主要用于存储临时数据,是编码程序中尤为重要的一部分。在定义变量的时候,通常要为其赋值,所以在定义变量的同时,系统会自动为该变量分配一个存储空间来存储变量的值。
2.3.1 声明变量
1.变量的定义
在PHP中变量的语法格式如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/44_03.jpg?sign=1739525336-x9X6OnrCApyGNTFzDSzZUNhBRT84veUk-0-af8d1e4d8522822261f8963ce1ab2454)
2.变量的命名规则
1)在PHP中的变量名是区分大小写的。
2)变量名必须是以符号“$”开始。
3)变量名开头可以以下划线开始。
4)变量名不能以数字字符开头。
5)变量名可以包含一些扩展字符(如重音拉丁字母),但不能包含非法扩展字符(如汉字字符和汉字字母)。
【例2-3】命名举例。
正确的变量命名:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/44_04.jpg?sign=1739525336-xU5DxFfndosf7HJ5fk6u89d1Yp6Nj6QP-0-553e10b05b45a30cf062ea7652843790)
错误的变量命名:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/45_01.jpg?sign=1739525336-gK386kjrJdgaDx0pyc719IlZsvlpNuvc-0-335dda52dcdbfe1fb16d0094f78b0cfd)
2.3.2 变量赋值
变量的赋值有三种方式。
(1)直接赋值
直接赋值就是使用“=”直接将值赋给某变量,例如:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/45_02.jpg?sign=1739525336-39E1LBTgFJOGKozgCT2pEUNHJv3mhcuH-0-334edc2812231bb94bda1c486bccbc43)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/45_03.jpg?sign=1739525336-okCX5jyL0RdXzmkANUB2DoRFltI9Fj9q-0-fdb75fe8d8b377f471aa11f145aec074)
上例中分别定义了$name变量和$number变量,并分别为其赋值,然后使用echo输出语句输出变量的值。
(2)传值赋值
传值赋值就是使用“=”将一个变量的值赋给另一个变量,例如:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/45_04.jpg?sign=1739525336-RIYz3Er0LBh30f0zYq6Z4Bc37icA23kj-0-25515899b687c1ecf424b5100ed1292f)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/45_05.jpg?sign=1739525336-bkNk94OTSdKP7RnFIb6oqvc1R5bIIDow-0-d76ca4471eb8e7c872e5f399a57981fb)
在上面的例子中,先定义变量a并赋值为18,然后又定义变量b,并设置变量b的值等于变量a的值,此时变量b的值也为18。
(3)引用赋值
引用赋值是一个变量引用另一个变量的值,例如:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/45_06.jpg?sign=1739525336-viQWDJGxkvKdeQbYYyRb10nxpDUANAVt-0-e1eb1ccba6c298b3c855d5786e4003f7)
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/46_01.jpg?sign=1739525336-eUDS63wqKo7R9RmZKDMMuX01cECouKov-0-9b50a1be05ba3410f1e734f07142a96f)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/46_02.jpg?sign=1739525336-OPJk3Oy6CWVz44xkgacdRmWubfoN6ePv-0-6682cb6cc1d968825b3f38a4b7a1d84e)
仔细观察一下,“$b=&$a”中多了一个“&”符号,这就是引用赋值。当执行“$b=&$a”语句时,变量b将指向变量a,并且和变量a共用同一个值。
当执行“$b=28”时,变量b的值发生了变化,此时由于变量a和变量b共用同一个值,所以当变量b的值发生变化时,变量a也随之发生变化。
2.3.3 变量作用域
变量的作用域是指变量在哪些范围能被使用,在哪些范围不能被使用。PHP中分为3种变量作用域,分别为局部变量、全局变量和静态变量。
1.局部变量
局部变量就是在函数的内部定义的变量,其作用域是所在函数。
【例2-4】自定义一个名为example()的函数,然后分别在该函数内部及函数外部定义并输出变量a的值,具体代码如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/46_03.jpg?sign=1739525336-c9Sejq71ahThWpGfCKioqhLtlvcahCzu-0-7c1bfd5a68f4ff7b5ce5492e0e542e0d)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/46_04.jpg?sign=1739525336-NdRTrhwOwP4G8PoaAHE8ay7QECS5XHs7-0-efa6dc997ef99bb7efe5f0bb03888fb8)
2.全局变量
全局变量是被定义在所有函数以外的变量,其作用域是整个PHP文件,但是在用户自定义函数内部是不可用的。想在用户自定义函数内部使用全局变量,要使用global关键词声明。
【例2-5】定义一个全局变量,并且在函数内部输出全局变量的值。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/46_05.jpg?sign=1739525336-VfMy7V9YJZNjkMJsViR5fD2spRdFdcVi-0-5ea2bcbd6871b10ef9bbd89a50e175d6)
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/47_01.jpg?sign=1739525336-OzyveNKkv05XPdiMBZAbpTJGk690UisY-0-dba996237dc5882551e551ad38c01840)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/47_02.jpg?sign=1739525336-rYp52xxXNbk4FRvii1dp2oSLcYwgTSF7-0-505dfc92b6d824a9ab8ed7024dab8a43)
3.静态变量
通过对全局变量的认识,可以知道在函数内部定义的变量,在函数调用结束后,其变量将会失效。但有时仍然需要该函数内的变量有效,此时就需要将变量声明为静态变量,声明静态变量只需在变量前加“static”关键字即可。
【例2-6】分别在函数内声明静态变量和局部变量,并且执行函数,比较执行结果有什么不同。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/47_03.jpg?sign=1739525336-5IMCAWdgUiNDbR8agdC9Tuh1jRJNCnUT-0-2c864dd359657e92a0987ac7496255b0)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/47_04.jpg?sign=1739525336-ym8mzyug140iIllVl96GGVUOMszeRjH5-0-2a6f7d4a0dccab51b0c9fb83c205c205)
2.3.4 可变变量
可变变量是一种独特的变量,这种变量的名称是由另外一个变量的值来确定的,声明可变变量的方法是在变量名称前加两个“$”符号。
声明可变变量的语法如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/48_01.jpg?sign=1739525336-OjQwbhiw9YuOz6hfipB5EIU1ocCAlGGk-0-5dbf00a2f750347e7dbb47f879a2c43c)
【例2-7】下面举例说明声明可变变量的方法,具体代码如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/48_02.jpg?sign=1739525336-uo9CyRAaTCIs7qvuvTZW1YnJ4RINxlmU-0-cce44f904400c97251aa90a78a4bbc33)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/48_03.jpg?sign=1739525336-9GxRwdV4kujmG3fJkPARgVE4txMEmKbG-0-320b6de89fca0cbefb579fd38c8d5add)
2.3.5 外部变量
在PHP中,把程序中定义的变量叫内部变量,而把表单中定义的变量(即控件名称)、URL中的参数名统称为外部变量,其值通过预定义变量$_POST、$_GET、$_REQUEST获得。比如:带参数超链接<a href="php文件名?参数名=值&参数名=值">。
① $_POST["表单变量"]:取得从客户端以POST方式传递过来的表单变量的value值。
② $_GET["表单变量"]:取得从客户端以GET方式传递过来的表单变量的value值。
③ $_REQUEST["表单变量"]:取得从客户端以任意方式传递过来的表单变量的value值。
④ $_REQUEST["参数名"]:取得从客户端传递过来的参数值。
【例2-8】利用POST和GET方式提交表单,演示外部变量的使用。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/48_04.jpg?sign=1739525336-uktEP8ZykRm3wJKZPDut2FfQPkQbtcPF-0-1056f335449ac54a6c79bd824c19f3bd)
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/49_01.jpg?sign=1739525336-znKZTriYJYSUxZ1lGP6SOYYrUG7MzU3z-0-673dfe1d4d230e68ee02fc1055b3d0c3)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/49_02.jpg?sign=1739525336-N29w3GjdwYwoFL5JgtdJE3DKqXLTtj4t-0-0eb88e4ee29d9f913c30a8678f860dc1)
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】变量或常量数据类型查看函数应用。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/49_03.jpg?sign=1739525336-jh7C2iV7aJbbXtk9pKf5K1xDAfqFzEHI-0-dfaeb2da919cbfa7ff056c371a2afc37)
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/50_01.jpg?sign=1739525336-OZHJePdeDe3WFg34tfFttZgToGTfX684-0-986c47af3ed1ac6410e7b86255c4032c)
运行结果如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/50_02.jpg?sign=1739525336-dixSDOny75ggkrsjZcvkUEmBgKTQPwyH-0-b835dee5a0c665ad3f116d7de191b9d2)