php 变量与常量,PHP变量与常量

在程序执行的过程中,变量存储的值可以随时改变,而常量存储的值是不可以改变的。变量用于存储临时数据信息,对于那些临时数据信息或者处理过程,都可以存放在变量中。常量用于存储不经常改变的数据信息。定义常量的时候可以对其赋值,在程序的整个执行期间内,这个赋值都有效且不可再次对该常量进行赋值操作。

PHP变量

PHP变量与与数学中的代数类似,可以给 PHP 变量赋予某个值(x=5)或者表达式(z=x+y)。

变量的命名规则

变量以 $ 符号开始,后面跟着变量的名称

变量名必须以字母或者下划线字符开始

变量名只能包含字母数字字符以及下划线(A-z、0-9 和 _ ),不能包含空格

变量名是区分大小写的($y 和 $Y 是两个不同的变量)

变量的创建与使用

PHP 没有声明变量的命令。变量在您第一次赋值给它的时候被创建。PHP是一门弱类型语言,所以不必向 PHP 声明该变量的数据类型。PHP 会根据变量的值,自动把变量转换为正确的数据类型。在强类型的编程语言(比如java语言)中,我们必须在使用变量前先声明(定义)变量的类型和名称。

变量的赋值

结果:

首先变量a的值是10,将a的值赋值给变量b,再将a的值赋值为5,输出变量b的值为10,因为变量b的值与变量a无关。

第7行中使用的是引用赋值,从PHP4开始,PHP引入了“引用赋值”的概念,就是用不同的名字访问同一个变量内容。当改变其中一个变量的值,另一个也会发生变化,两者在内存中指向的是同一个地址。引用赋值使用“&”来表示引用。因此,变量c与变量a的值一致,当变量a重新赋值为6时,变量c的值也变成了6。

变量的作用域

PHP变量有4种作用域

local

global

static

parameter

下面我们就具体来看一下这4种作用域

局部作用域和全局作用域

在所有函数外部定义的变量,拥有全局作用域。除了函数外,全局变量可以被脚本中的任何部分访问,要在一个函数中访问一个全局变量,需要使用 global 关键字。

在 PHP 函数内部声明的变量是局部变量,仅能在函数内部访问 。

结果:

在局部作用域访问全局变量时,需要使用global关键字,当然方法不止一种。

局部变量访问全局变量的三种方法

全局变量访问局部变量的三种方法

static作用域

当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。

要做到这一点,只需在第一次声明变量时使用 static 关键字。

每次调用该函数时,该变量将会保留着函数前一次被调用时的值。但是该变量仍然是函数的局部变量。

parameter 参数作用域

参数是通过调用代码将值传递给函数的局部变量(值传递),参数是在参数列表中声明的,作为函数声明的一部分。

PHP常量

PHP常量的命名规则和变量类似,不能以数字开始,由英文字母,下划线,数字组成。不过一般情况下常量都是以大写字母和下划线组成。

常量的define()定义

在PHP中我们使用define()函数来定义常量,define()函数的语法如下:

$name:常量的名称,必须有

$value : 常量的值,必须有

$case_insensitive 用来控制常量名是否大小写敏感(默认是敏感),设定true,表示不敏感。可选参数,有两个值,true和false

常量的const关键字定义

在PHP 5.3.0之后,除了使用函数define()之外,我们还可以使用PHP关键字const来定义常量。

两种定义常量方式的区别

1.版本差异

首先,毫无疑问的是,两种定义常量的方式之间存在版本差异,函数define()在PHP4和PHP5中均可使用,关键字const只能在PHP 5.3.0及其后的版本中使用。

2.定义位置的区别

由于函数define()定义的常量是在执行define()函数时定义的,因此可以在函数内、循环内、if语句内等函数能够被调用的任何地方使用define()函数定义常量。与define()不同的是,由于const关键字定义的常量是在编译时定义的,因此const关键字定义常量必须处于最顶端的作用区域。这也就意味着不能在函数内、循环内以及if语句之内用const来定义常量。

3.对值的表达式支持的差异

虽然关键字const和define()定义的常量值都只能为null或标量数据(boolean,integer,float和string类型)以及resource类型(不推荐定义resource类型的常量,否则可能出现无法预知的结果)。不过,由于关键字const定义常量是在编译时定义的,因此const关键字定义的常量值的表达式中不支持算术运算符、位运算符、比较运算符等多种运算符,而这些运算符在define()函数定义常量时都是可以直接使用的。

例如:

4.对字符大小写敏感的支持差异

除上述3个区别外,还有一个不太起眼的区别。函数define()可以接收第3个参数,如果该参数为true,则表示常量名的大小写不敏感。而使用const关键字定义常量却没有提供类似的功能。

常量的获取

获取常量有2种方法,一种是使用常量名直接获取

另一种是使用constant()函数,constant()函数和直接使用常量名输出的效果是一样的,但函数可以动态地输出不同的常量,在使用上要灵活方便很多,参数const_name为要获取常量的名称,也可以是存储常量名的变量。如果获取成功则返回常量的值,否则提示错。

结果:

判断常量是否被定义

defined(name)

参数 name 为要获取常量的名称,成功返回true,否则返回false。

PHP变量与常量的区别

通过上面的内容我们可以总结一下几点来上面php常量与变量的区别:

常量前面没有美元符号($)

常量只能用 define() 函数定义,而不能通过赋值语句

常量可以不用理会变量范围的规则而在任何地方定义和访问

常量一旦定义就不能被重新定义或者取消定义

常量的值只能是标量(整型 浮点型 布尔型 null 字符串),不能是 数组 对象 资源,变量的值可以是PHP所有的数据类型(PHP的八种数据类型)。

PHP的八种数据类型

4种标量类型

boolean(布尔型)

integer(整型)

float(浮点型)

string(字符串型)

两种符合类型

array(数组)

object(对象)

两种特殊类型

resource(资源)

空值(null)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值