专题讲座:光盘\MR\Video\4\PHP变量.exe
视频速递:全面解读PHP变量
变量是指在程序执行的过程中其值是可以变化的。变量通过一个名字(变量名)来标识。系统为程序中的每一个变量分配一个存储单元,变量名实质上就是计算机内存单元的命名。因此,借助变量名就可以访问内存中的数据。
和很多语言不同,在PHP中使用变量之前不需要声明变量(在PHP 4.0之前需要声明变量),只须为变量赋值即可。PHP中的变量名称用$和标识符表示,并遵循以下约定。
在PHP中的变量名是区分大小写的。
变量名必须是以美元符号($)开始。
变量名开头可以以下画线开始。
变量名不能以数字字符开头。
变量名可以包含一些扩展字符(如重音拉丁字母),但不能包含非法扩展字符(如汉字字符和汉字字母)。
PHP中的变量用“$”加变量名来表示。变量名是区分大小写的。
使用变量时,只须对变量直接赋值即可。变量赋值是指给变量一个具体的数据值,对于字符串和数字类型的变量,可以通过“=”来实现,格式如下。
对变量赋值时,要遵循变量命名规则。如下面的变量命名是合法的。
下面的变量命名则是非法的。
【例4.3】 除了直接赋值外,还有两种方式来给变量声明或赋值。一种是变量间的赋值,另外一种是引用赋值。变量间的赋值是指赋值后两个变量使用各自的内存,互不干扰。下面就来了解一下这两种赋值方式。
本实例完整代码如下。
运行结果: wang
【例4.4】 从PHP 4.0开始,PHP引入了“引用赋值”的概念。就是说用变量给变量赋值后,当改变其中一个变量的值,另一个也跟着发生变化。有点像C语言里的指针,使用“&”符号来表示引用。
本实例利用&符号讲解变量间的引用赋值,代码如下。
运行结果如下。
变量在使用时,要符合变量的定义规则。变量必须在有效范围内使用,如果超出有效范围,变量也就失去其意义了。变量的作用域如表4.3所示。
表 4.3 变量的作用域
在函数内部定义的变量,其作用域是所在函数。如果在函数外赋值,将被认为是完全不同的另一个变量。在退出声明变量的函数时,该变量及相应的值就会撤销。
【例4.5】 下面分别输出在函数内赋值的变量(局部变量)和在函数外赋值的变量(全局变量)。
(1)首先,定义全局变量$example。
(2)其次,编写自定义函数example,在此自定义函数中定义局部变量$example。
(3)最后,分别输出这两个变量。本实例完整代码如下。
运行结果如图4.4所示。
【例4.6】 静态变量在很多地方都能用到。例如,在博客中,使用静态变量记录浏览者的人数,在每一次用户访问和离开时,都能够保留目前浏览者的人数。还有在聊天室中,也可以用静态变量来记录用户的聊天内容。下面应用静态变量和普通变量同时输出一个数据,观察两者的功能有什么不同。
编写自定义函数zdy(),在函数内部定义静态变量并输出,再编写一个自定义函数zdy1()在方法体内部定义局部变量并输出,实例代码如下。
运行结果如图4.5所示。
自定义函数zdy()是输出从1~10,10个数字,而zdy1()函数则输出的是10个1。因为自定义函数zdy()含有静态变量,而函数zdy1()是一个普通变量。初始化都为0,再分别使用for循环调用两个函数,结果是静态变量的函数zdy()在被调用后,保留了$message中的值,静态变量的初始化只是在第一次遇到时被执行,以后就不再对其进行初始化操作了;而普通变量的函数zdy1()在被调用后,其变量$message失去了原来的值,重新被初始化为0。
图 4.4 局部变量的使用
图 4.5 比较静态变量和普通变量的区别
【例4.7】 全局变量可以在程序中的任何地方访问。但是在用户自定义函数内部是不可用的,想在用户自定义函数内部使用全局变量,要使用global关键字声明。
在本实例中定义两个全局变量$zy和$zyy,在用户自定义函数lxt()里面,想要在第5、第7行调用它们,而程序输出的结果只有$zyy的值“PHP语言”,因为在第6行用global关键字声明了全局变量$zyy。第5行不会有任何输出,其中的$zy和第2行的$zy没有任何关系,实例代码如下。
运行结果: PHP 语言。
可变变量是一种独特的变量,它允许动态地改变一个变量的名称。工作原理是该变量的名称由另外一个变量的值来确定。实现过程是在变量的前面再多加一个“$”。
【例4.8】 应用可变变量实现动态改变变量的名称。
实例位置:光盘\MR\ Instance\4\4.8
首先定义两个变量$my_name和$myname,并且输出变量$my_name的值,然后应用可变变量改变变量$my_name的名称,最后输出改变名称后的变量值,程序代码如下。
运行结果: myname yourname
变量存在的时间称为生存周期。即从变量被声明的那一刻起,直到脚本运行结束。对于过程级变量,其存活期仅是该过程运行的时间,该过程结束后,变量随之消失。在执行过程中,局部变量是理想的临时存储空间。在不同过程中可以使用同名的局部变量,这是因为每个局部变量只被声明它的过程识别。