可变变量:
在不确定一个变量的名称时,可以使用可变变量。所谓可变变量就是一个变量的变量名可以动态地设置和使用。一个普通变量通过声明来设置,而一个可变变量通过获取一个普通变量的值作为它的变量名。可变变量通过两个“$”来设置。例如:
<?php
$name="Tom";
$$name=20;
echo $$name; //输出20
echo "${$name}"; //输出20
echo $Tom; //输出20
echo ${"Tom"}; //输出20
$name=123; //改变$name的值
?>
预定义变量:
1. 服务器变量$_SERVER
服务器变量是由Web服务器创建的数组,其内容包括头信息、路径、脚本位置等信息。不同的Web服务器提供的信息也不同,本书以Apache服务器提供的信息为例。下表列出了一些常用的服务器变量及其作用,使用phpinfo()函数可以查看到这些变量信息。
2. 环境变量$_ENV
环境变量记录与PHP所运行系统相关的信息,如系统名、系统路径等。单独访问环境变量可以通过“$_ENV['成员变量名']”方式来实现。成员变量名包括ALLUSERSPROFILE、CommonProgramFiles、COMPUTERNAME、ComSpec、FP_NO_HOST_CHECK、NUMBER_ OF_PROCESSORS、OS、Path、PATHEXT、PHPRC、PROCESSOR_ARCHITECTURE、PROCESSOR_IDENTIFIER、PROCESSOR_LEVEL、PROCESSOR_REVISION、ProgramFiles、SystemDrive、SystemRoot、TEMP、TMP、USERPROFILE、windir、AP_PARENT_PID等。
如果PHP是测试版本,使用环境变量时可能会出现找不到环境变量的问题。解决办法是,打开php.ini配置文件,找到“variables_order = "GPCS"”所在的行,将该行改成“variables_order = "EGPCS"”,然后保存,并重启Apache。
3. GLOBAL变量$GLOBALS
$GLOBALS变量以数组形式记录所有已经定义的全局变量。通过“$GOLBAL["变量名"]”的方法来引用全局变量。由于 $GLOBALS 超全局变量可以在程序的任意地方使用,所以它比使用“global”引用全局变量更方便。例如:
<?php
$a = 1;
$b = 2;
function Sum() //创建Sum()函数
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
//运算全局变量$b的值
}
Sum();
echo $b; //输出结果为3
另外,PHP的预定义变量还有:
$_COOKIE。它是由 HTTP Cookies传递的变量组成的数组。
$_GET。它是由HTTP get方法传递的变量组成的数组。
$_POST。它是由HTTP post方法传递的变量组成的数组。
$_FILES。它是由HTTP post方法传递的已上传文件项目组成的数组。
$_REQUEST。它是所有用户输入的变量数组,包括$_GET、$_POST、$_COOKIE所包含的输入内容。
$_SESSION。它是包含当前脚本中会话变量的数组。
?>
常量:
常量分为自定义常量和预定义常量。
1. 自定义常量
自定义常量使用define()函数来定义,语法格式如下:
define("常量名","常量值");
常量一旦定义,就不能再改变或取消定义,而且值只能是标量,数据类型只能是boolean、integer、float或string。和变量不同,常量定义时不需要加“$”。
例如:
<?php
define("_KO","156");
define("CONSTANT","Hello World!");
if(defined("CONSTANT"))
{
echo CONSTANT; //输出"Hello World!"
}
echo constant("CONSTANT"); //输出"Hello World!"
?>
2. 预定义常量
预定义常量也称魔术常量,PHP提供了大量的预定义常量。但是很多常量是由不同的扩展库定义的,只有加载这些扩展库后才能使用。预定义常量使用方法和常量相同,但是它的值会根据情况的不同而不同,经常使用的预定义常量有5个,这些特殊的常量是不区分大小写的。
PHP的预定义常量:
名 称 | 说 明 |
__LINE__ | 常量所在的文件中的当前行号 |
__FILE__ | 常量所在的文件的完整路径和文件名 |
__FUNCTION__ | 常量所在的函数名称 |
__CLASS__ | 常量所在的类的名称 |
__METHOD__ | 常量所在的类的方法名 |