PHP变量和常量

八月 6, 201913:27:29 评论 201
摘要

PHP学习笔记:PHP变量和常量。知识来源:《PHP从零基础到项目实战》——未来科技编著

PHP变量和常量

变量包含普通变量、可变变量和预定义变量,常量包括普通常量和预定义常量。

使用变量

变量就是内存中一个命名单元,系统为程序中每个变量分配一个存储单元,在这些存储单元中可以存储任意类型的数据。PHP不要求先声明变量后再使用变量,只需要为变量赋值即可,但是PHP变量的名称必须使用$字符作为前缀且变量名称区分大小写。

PS:在PHP4之前是需要先声明变量的。

为变量赋值时可以使用运算符“=”实现,、等号左侧为变量名称,右侧为为变量所赋的值。样例:

<?php
$num = '3.1415926abc';
?>

变量名不能够以数字、特殊字符开头,除了直接赋值外,还可以使用如下方法为变量赋值。

1.一是变量之间相互赋值。

<?php
$num1 = '3.1415926';
$num2 = $num1;
echo $num2;				//显示'3.1415926'
?>
PS:变量之间赋值,只是传递值,变量在内存中的存储单元还是各自独立且互不干扰的。

2.二是引用赋值,即使用&运算符定义引用。

PS:从PHP4开始,PHP引入了引用赋值的概念,就是用不同的名称访为同一个变量的内容,当改变其中一个变量的值时,另一个变量的值也跟着发生变化。

在下面的代码中,$num2引用$num1,修改$num1变量的值,则$num2变量的值也随之改变。

<?php
$num1 = '3.1415926';
$num2 = &$num1;			//引用变量$num1
$num1 = 'string';		        //修改变量$num1的值
echo $num2;			       //显示变量$num2的值也被更改为字符串'string'
?>

取消引用

当不需要引用时,可以使用unset()函数来取消变量引用,用该函数能够断开变量名与引用的内容之间的联系,而不是销毁变量内容。

<?php
$a = 1;
$b = &$a;		//定义引用
echo $b;		//显示1
unset($b);		//取消引用
echo $b;		//显示空
?>

可变变量

可变变量是一种特殊的变量,它允许动态改变变量的名称,也就是说该变量的名称由另外一个变量的值来确定,定义可变变量的方法是在变量前面添加一个$符号。

<?php
$a = "b";		//声明变量$a,该变量的值为字符串b
$b = 2;			//声明变量$b,该变量的值为数字2
echo $a;		//显示变量$a的值
echo $$a;		//通过可变变量输出变量$b的值2
?>

有时候使用可变变量名是很方便的。

<?php
$a = 'hello';
$$a = 'world';
echo "$a ${$a}";
echo "$a $hello";
?>

在上面的代码中,可变变量$$a的名称可以是变量$a的值,可以直接使用变量$a的值来引用可变变量并获取它的值。其中{$a}表达式表示获取变量$a的值,因此,${$a}$hello所表达的意思是相同的,都表示可变变量$$a的一个名称。

预定义变量

PHP提供了大量的预定义变量,通过这些预定义变量可以获取用户会话、用户操作环境和本地操作系统等信息,由于许多变量依赖于服务器的版本和设置以及其他因素,所以并没有详细的说明文档。一些预定义变量在PHP以命令行形式运行时并不生效。常用预定义变量说明如下表所示。

预定义变量 说明
$GLOBALS 引用全局作用域中可用的全部变量
$_SERVER 服务器和执行环境信息
$_GET HTTP GET 变量
$_POST HTTP POST 变量
$_FILES HTTP 文件上传变量
$_REQUEST HTTP Request 变量
$_SESSION Session 变量
$_ENV 环境变量
$_COOKIE HTTP Cookies
$php_errormsg 前一个错误信息
$HTTP_RAW_POST_DATA 原生POST数据
$http_response_header HTTP响应头
$argc 传递给脚本的参数数目
$argv 传递给脚本的参数数组

声明常量

常量可以理解为值不变的量。常量值被定义后,在脚本执行期间都不能改变或者取消定义。常量名和其它PHP标签遵循相同的命名规则,即由英文字母、下划线和数字组成,但数字不能作为首字母出现。在PHP中声明常量有以下两种方法:

1.使用define()函数

使用define()函数来定义常量的具体语法格式如下:

bool define ( string $name , mixed $value [, bool $case_insensitive = False ] )

参数说明:

  • name:常量名
  • value:常量的值。值的类型必须是integer、float、string、boolean、NULL或array。
  • case_insensitive:可选参数,如果设置为True,该常量则大小写不敏感。默认是大小写敏感的,如CONSTANT和Constant代表了不同的值。

声明常量成功后将返回True,否则将返回False。

以下代码将演示如何定义一个普通常量,常量名为CONSTANT,值为“Hello world.”。

<?php
defined("CONSTANT", "Hello world.");
?>
PS:常量和变量有如下不同:

  • 常量前面没有美元符号($)。
  • 常量只能用define()函数定义,而不能通过赋值语句。
  • 常量可以不用理会变量的作用域而在任何地方定义和访问。
  • 常量一旦定义就不能被重新定义或者取消定义。
  • 常量的值只能是标量。

2.const关键字

使用const关键字定义常量必须位于最顶端的作用区域,因为此方法是在编译时定义的。不能在函数内、循环内、或者if语句之内用const来定义常量。

以下代码演示使用const关键字定义一个普通常量,常量名为CONSTANT,值为“Hello world.”。

<?php
//以下代码在PHP5.3.0以上可以正常工作。
const CONSTANT = 'Hello world';
?>

使用常量

获取常量的值有以下两种方法:

  • 使用常量名直接获取值。
  • 使用constant()函数获取。

constant()函数和直接使用常量名输出的效果是一样的,但函数可以获取动态的常量,在使用上要灵活方便的多。constant()函数的语法格式如下:

mixed constant ( string $name )

参数name为要获取常量的名称,也可以为存储常量名的变量。如果获取成功则返回常量的值,否则提示错误信息。以下代码使用define()函数定义一个常量MAXSIZE,然后使用两种方法读取常量的值,输出结果是相同的。

<?php
define ("MAXSIZE", 100);
echo MAXSIZE;				//输出100
echo constant("MAXSIZE");	//输出100
?>

预定义常量

PHP提供了大量的预定义常量。不过很多常量都是由不同的扩展库定义的,只有加载了这些扩展库才会出现。有些预定义常量的值会随着它们在代码中位置的改变而改变。例如_LINE_的值就依赖于它在脚本中所处的行来决定,因此也被称为魔术常量。这些特殊的常量不区分大小写。有关预定义常量的详细说明参见《PHP手册》。

  • A+
所属分类:PHP
avatar
冰凝梦想

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: