PHP 变量与常量
2015-12-09 23:44
726 查看
对于变量与常量这种老生常谈的话题,也许觉得作者本人太过于啰嗦。但我发现再次去理解或者是再次去阅读相关内容时,总能给人一种更新的感受,而且这种感受更加深刻。我想这就是所谓的:温故而知新吧。好了不再多说了。看下面的相关资料:
变量用于存储临时数据信息。某一变量被定义的时候,系统会自动为该变量分配一个存储空间存放变量的值。我们可以在定义变量的时候对其赋值,如果需要改动变量的值,只需再次对其进行赋值即可。对于那些临时数据信息或者处理过程,都可以存放在变量中。
常量用于存储不经常改变的数据信息。定义常量的时候可以对其赋值,在程序的整个执行期间内,这个赋值都有效且不可再次对该常量进行赋值操作。
$变量名称 = 变量的值
在为一个变量命名时,需要遵循以下命名规则:
1:变量名以字母或下画线开头,可以由字母、下画线或数字构成。
2:变量名区分大小写,“var”和“var”和“VAR”分别代表了两个不同的变量。
3:自定义变量名称不可与PHP提供的默认变量名称相同。
4:在为变量命名时,尽量使用有意义的字符串。
符合规定的变量命名如下:
不符合规定的变量命名如下:
在上面代码中,执行“a=33”语句时,系统会在内存中为变量a开辟一个存储空间,并将33这个数值存入到该存储空间。实现过程如图2−14所示。执行“a = 33”语句时,系统会在内存中为变量a开辟一个存储空间,并将33这个数值存入到该存储空间。实现过程如图2-14所示。执行“b = $a”语句时,系统会在内存中为变量b开辟一个存储空间,并将变量a指向存储空间的内容复制到变量b所指向的存储空间。
在上面代码中执行“a=33”语句时,对内存操作的过程与传值赋值相同,这里就不再说明了。执行“a = 33”语句时,对内存操作的过程与传值赋值相同,这里就不再说明了。执行“b = &a”语句后,变量b将会指向变量a所占有的存储空间。执行“a”语句后,变量b将会指向变量a所占有的存储空间。执行“b = 44”语句后,变量b所指向的存储空间保存的值变为44。此时由于变量a也指向此存储空间,所以变量a的值也会变为44。
注意,注意,注意,重要的事情说三遍!
这里要特别强调一下上面这段话:执行“b = &b = &a”语句后,变量b将会指向变量a所占有的存储空间
局部变量实例:
全局变量实例:
PHP对于变量的生命周期规定如下:
局部变量的生命周期为其所在函数被调用的整个过程。当局部变量所在的函数结束时,局部变量的生命周期也随之结束。
全局变量的生命周期为其所在“.php”脚本文件被调用的整个过程。当全局变量所在脚本文件结束调用时,全局变量的生命周期结束。
有时某个自定义函数结束后,我们希望该函数内的变量仍然存在,就需要将这个变量声明为静态变量。将一个变量声明为静态变量的方法为,在变量前面加“static”关键字。
一、什么是变量和常量?
在程序执行的过程中,变量存储的值可以随时改变,而常量存储的值是不可以改变的。变量用于存储临时数据信息。某一变量被定义的时候,系统会自动为该变量分配一个存储空间存放变量的值。我们可以在定义变量的时候对其赋值,如果需要改动变量的值,只需再次对其进行赋值即可。对于那些临时数据信息或者处理过程,都可以存放在变量中。
常量用于存储不经常改变的数据信息。定义常量的时候可以对其赋值,在程序的整个执行期间内,这个赋值都有效且不可再次对该常量进行赋值操作。
二、变量的定义与赋值?
前面讲解了下变量,但我们还没有系统地讲解变量的应用。下面我们开始讲解如何在PHP中实现变量的定义与赋值操作。1.变量的定义
在PHP中定义一个变量的语法格式如下:$变量名称 = 变量的值
在为一个变量命名时,需要遵循以下命名规则:
1:变量名以字母或下画线开头,可以由字母、下画线或数字构成。
2:变量名区分大小写,“var”和“var”和“VAR”分别代表了两个不同的变量。
3:自定义变量名称不可与PHP提供的默认变量名称相同。
4:在为变量命名时,尽量使用有意义的字符串。
符合规定的变量命名如下:
$name; $_password; $no1;
不符合规定的变量命名如下:
$1book; $*a;
2.变量的赋值
为变量赋值有两种方式:传值赋值和引用赋值,这两种赋值方式在对数据处理上存在很大差别。1)传值赋值
这种赋值方式使用“=”直接将一个变量(或表达式)的值赋给另一个变量。使用这种赋值方式,等号两边的变量值互不影响,任何一个变量值的变化都不会影响到另一个变量。从根本上来说,传值赋值是通过在存储区域复制一个变量的副本来实现的。应用传值赋值的示例代码如下:$a = 33; $b = $a; $b = 44; echo "变量a的值为" . $a . "<br>"; echo "变量b的值为" . $b;
output: 变量a的值为33 变量b的值为44
在上面代码中,执行“a=33”语句时,系统会在内存中为变量a开辟一个存储空间,并将33这个数值存入到该存储空间。实现过程如图2−14所示。执行“a = 33”语句时,系统会在内存中为变量a开辟一个存储空间,并将33这个数值存入到该存储空间。实现过程如图2-14所示。执行“b = $a”语句时,系统会在内存中为变量b开辟一个存储空间,并将变量a指向存储空间的内容复制到变量b所指向的存储空间。
2)引用赋值
引用赋值同样是使用“=”将一个变量的值赋给另一个变量,但是需要在等号右边的变量前面加上一个“& ”符号。实际上这种赋值方式并不是真正意义上的赋值,而是一个变量引用另一个变量。在使用引用赋值的时候,两个变量将会指向内存中同一存储空间, 因此任何一个变量的变化都会引起另外一个变量的变化。应用引用赋值的示例代码如下:<?php $a = 33; $b = &$a; $b = 44; echo "变量a的值为" . $a . "<br>"; echo "变量b的值为" . $b; ?>
output: 变量a的值为44 变量b的值为44
在上面代码中执行“a=33”语句时,对内存操作的过程与传值赋值相同,这里就不再说明了。执行“a = 33”语句时,对内存操作的过程与传值赋值相同,这里就不再说明了。执行“b = &a”语句后,变量b将会指向变量a所占有的存储空间。执行“a”语句后,变量b将会指向变量a所占有的存储空间。执行“b = 44”语句后,变量b所指向的存储空间保存的值变为44。此时由于变量a也指向此存储空间,所以变量a的值也会变为44。
注意,注意,注意,重要的事情说三遍!
这里要特别强调一下上面这段话:执行“b = &b = &a”语句后,变量b将会指向变量a所占有的存储空间
3、变量作用域
使用PHP语言开发的时候,我们几乎可以在任何位置声明变量,但是变量声明位置及声明方式的不同决定了变量作用域的不同。所谓的变量作用域,指的是变量在哪些范围能被使用,在哪些范围不能被使用。在PHP中,按照变量作用域的不同可以分为局部变量和全局变量。1.局部变量
局部变量是声明在某一函数体内的变量,该变量的作用范围仅限于其所在函数体的内部。如果在该函数体外部引用这个变量,系统将会认为引用的是另外一个变量。局部变量实例:
function local(){ $a="local variable"; return $a; } $a="hello"; echo local(); echo "<br>"; echo $a;
output: local variable hello
4.全局变量
全局变量可以在程序的任何地方被访问,这种变量的作用范围是最广泛的。要将一个变量声明为全局变量,只需在这个变量前面加上“global”关键字(不区分大小写,也可以是GLOBAL)。使用全局变量,我们就能够在函数内部引用函数外部参数,或者在函数外部引用函数内部的参数了。在函数内调用函数外定义的全局变量,我们需要在函数中的变量前加上 global 关键字.全局变量实例:
<?php $a = "outside"; //定义一个变量a(注意:此时$a是全局变量) function local(){ //定义一个函数local global $a; //将变量a声明为全局变量 echo "在local函数内部获得变量a的值为" . $a . "<br>"; global $b; //将变量b声明为全局变量 $b = "inside"; //local函数内部对变量b进行赋值 } local(); //输出local函数内部变量a的值 echo "在local函数外部获得变量b的值为" . $b; //在函数local外部输出变量b的值 ?>
output: 在local函数内部获得变量a的值为outside 在local函数外部获得变量b的值为inside
全局变量的应用
注意:应用全局变量虽然能够使我们更加方便地操作变量,但有的时候变量作用域的扩大,会给开发带来麻烦,可能会产生一些预料不到的问题。在通常情况下,我们不建议使用全局变量。5、静态变量
变量不仅有其特定的作用范围,还有其存活的周期——生命周期。变量的生命周期指的是变量可被使用的一个时间段,在这个时间段内变量是有效的;而一旦超出这个时间段变量将会失效,我们就不能够再访问到该变量的值了。PHP对于变量的生命周期规定如下:
局部变量的生命周期为其所在函数被调用的整个过程。当局部变量所在的函数结束时,局部变量的生命周期也随之结束。
全局变量的生命周期为其所在“.php”脚本文件被调用的整个过程。当全局变量所在脚本文件结束调用时,全局变量的生命周期结束。
有时某个自定义函数结束后,我们希望该函数内的变量仍然存在,就需要将这个变量声明为静态变量。将一个变量声明为静态变量的方法为,在变量前面加“static”关键字。
相关文章推荐
- php_1
- Yii2 模型实例化
- thinkphp 3.2 =》0625-8_分页效果
- STP的选举原则
- thinkphp 3.2 =》0625-6_登录业务与 验证码 =》登录页 与 验证码
- _WorldSpaceLightPos0的w值
- php安装threads多线程扩展
- ubuntu上架设vsftpd
- 在Navicat premium上创建的SQL Server数据库,实现用PHP连接(即php连接微软MSSQL)
- thinkphp 3.2 =》0625-2_ =>css/js /mages路径
- PHP中的函数-- foreach()的用法详解
- ntp服务器
- PHP代码中input控件使用id无法POST传值,使用name就可以
- PHP base64 图片(备忘)
- PHP7 的抽象语法树(AST)带来的变化
- thinkphp session过期时间设置
- php一些小知识点总结
- php curl 并发
- 判断php数组是否为空遇到的坑
- php性能分析工具工具xhprof的安装与使用