![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=1739441783-FK7PHDZGDYExD7YQaOUlUfkhmtDJ6tgR-0-e4cb0697bfdcae907b64f5967f1e21ab)
2.变量的命名规则
1)在PHP中的变量名是区分大小写的。
2)变量名必须是以符号“$”开始。
3)变量名开头可以以下划线开始。
4)变量名不能以数字字符开头。
5)变量名可以包含一些扩展字符(如重音拉丁字母),但不能包含非法扩展字符(如汉字字符和汉字字母)。
【例2-3】命名举例。
正确的变量命名:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/44_04.jpg?sign=1739441783-Bsxu9RDpdX0w40l04dO6dgLeafTfei5v-0-e0709010ab38f6d4ca7fadd4a99b3f59)
错误的变量命名:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/45_01.jpg?sign=1739441783-vgSNAho0ohdFAewGIsMvJY1PQQxfztEF-0-a6d93ebb8b654b6dedf0bd75313d4895)
2.3.2 变量赋值
变量的赋值有三种方式。
(1)直接赋值
直接赋值就是使用“=”直接将值赋给某变量,例如:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/45_02.jpg?sign=1739441783-O2HDq4bAgSYHvgscaSLAsML2mIHn10Pb-0-0cc192e2a3d2f5c229d4bb41524af683)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/45_03.jpg?sign=1739441783-izflTQrNmcBTmyz3zM9DKHpNY2BVWEZ3-0-6f85af7765f89d90bc278df30ca36081)
上例中分别定义了$name变量和$number变量,并分别为其赋值,然后使用echo输出语句输出变量的值。
(2)传值赋值
传值赋值就是使用“=”将一个变量的值赋给另一个变量,例如:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/45_04.jpg?sign=1739441783-PawIVnqwKpWXOhsifkWvF3XZdsl2dOIp-0-2f607d809f79ac581d30081e49910588)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/45_05.jpg?sign=1739441783-MzZr4g9M9LkcPVTXsxGtRJtLl7BM6iLf-0-cc00b69babf39a92ebb851e95ff85025)
在上面的例子中,先定义变量a并赋值为18,然后又定义变量b,并设置变量b的值等于变量a的值,此时变量b的值也为18。
(3)引用赋值
引用赋值是一个变量引用另一个变量的值,例如:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/45_06.jpg?sign=1739441783-SFx5Xxh9MTQmCmMtrYYIi8PTCj9nP1uT-0-cb9436c8fc5be671a2b0f9749cdddb0f)
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/46_01.jpg?sign=1739441783-Ff5Z1oos5EJiq0veuhuAqmBeZEyNd10b-0-f693c6642e8cd5df34a4d0773f319f46)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/46_02.jpg?sign=1739441783-o4qdcr6ZkS5YDuO5ogUArPEix2HP9gAy-0-713bf356b806d9bc61518f09e5105b9c)
仔细观察一下,“$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=1739441783-KzxkDH0JLfX8t9BwloKUdumISWOzgnjF-0-98900325be01088681230d92983bd7c6)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/46_04.jpg?sign=1739441783-aCJZF0qhxDRUAYa3aHsxp4Kw0AZDcZup-0-18ad8cb4add68273b6203f595a3c13af)
2.全局变量
全局变量是被定义在所有函数以外的变量,其作用域是整个PHP文件,但是在用户自定义函数内部是不可用的。想在用户自定义函数内部使用全局变量,要使用global关键词声明。
【例2-5】定义一个全局变量,并且在函数内部输出全局变量的值。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/46_05.jpg?sign=1739441783-Mawl0DPcTkDkiU3ZSEqNB94pFT5IxMsL-0-275006f16ae69c1ae3dfd86dbd3b9bea)
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/47_01.jpg?sign=1739441783-ugz5DuWzVT1xZIYKunM3r5qDcp6Sgk9s-0-08dfe388ddccc6a33514625c1637b4d6)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/47_02.jpg?sign=1739441783-YGirVswnfDpwQwt00GotTQ4UaX8TJ3Xn-0-99c802b8c1f5692bc431cea8f0dda63c)
3.静态变量
通过对全局变量的认识,可以知道在函数内部定义的变量,在函数调用结束后,其变量将会失效。但有时仍然需要该函数内的变量有效,此时就需要将变量声明为静态变量,声明静态变量只需在变量前加“static”关键字即可。
【例2-6】分别在函数内声明静态变量和局部变量,并且执行函数,比较执行结果有什么不同。
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/47_03.jpg?sign=1739441783-DwyTOPRjliNi25FQis7gBnGtdFs8VEqd-0-bc3f6ea797ae754548ad1908d248516e)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/47_04.jpg?sign=1739441783-6PlcYZObSfK5zp2XNoBRsmzzfr8gNf2B-0-87966cd4cefa714d18e19a80f99aa60b)
2.3.4 可变变量
可变变量是一种独特的变量,这种变量的名称是由另外一个变量的值来确定的,声明可变变量的方法是在变量名称前加两个“$”符号。
声明可变变量的语法如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/48_01.jpg?sign=1739441783-09RP55ZAccgPecX1119VCk2S6EWHBU1f-0-332fdcf5e6876c71f13900914cd06f5e)
【例2-7】下面举例说明声明可变变量的方法,具体代码如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/48_02.jpg?sign=1739441783-VqVsovCLBgeET05jq18vmZpsGCXjwqaG-0-03b000bbffa7d6676868c1b23e7a2906)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/48_03.jpg?sign=1739441783-3TM5ORWG9uFsx4jCWo3sF0Hjto0P13Tp-0-40997fa1102aaa89cefea95e28424860)
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=1739441783-27VNq2N5klB7wN0YdZWaduOtSohfDuJY-0-7254dbaceb8d07a0d939b32a19320ca1)
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/49_01.jpg?sign=1739441783-40sTh94YizhnJUpGFqdkn9oZNDfIFajs-0-c11d2628fd490ed2470c9145be0f235d)
运行结果为:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/49_02.jpg?sign=1739441783-mCUwiBzMc1AYbUa2YnE9QUL6Zl8kmD6G-0-fcadb4aff467c17b83c77eab56bfa695)
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=1739441783-tnpGeKAlDLbUgl3Qr68L6NLiWO33cjrI-0-b242c6eb6838af554968bd817a2ce36b)
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/50_01.jpg?sign=1739441783-b2mtBeooPqkT5RvH1wK0s1GHEVl8DOwZ-0-1ddcfb5b176852ad45a13b2dff0d38e2)
运行结果如下:
![](https://epubservercos.yuewen.com/A81163/18123624508030506/epubprivate/OEBPS/Images/50_02.jpg?sign=1739441783-xRkYn05C4myX2RuA4iCNI1kMwBAlYob2-0-f56408eb8b62bb5aa9fb9d4581f3612f)