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