PHP基础2-变量
PHP变量
变量是程序运行过程中,各种数据所存储的载体。程序根据变量的名称而找到对应的数据
自定义变量
以$开头,再加上一个合法的字符串,就成为自定义变量名,所谓合法,是指以字母或下划线开头,后面跟任意字母、数字、下划线。
变量的类型
由于PHP变量在使用之前并不需要像C语言那样事先定义变量类型,因此,变量一般是通过初始化来定义的,初始化时给变量赋一个值,PHP变量的类型由所赋值的类型决定。例如:
1 |
|
变量赋值的方式
(1)值赋值:将一个变量的值赋给另一个变量,例如:$a = $b。
(2)引用赋值:将一个变量的地址赋给另一个变量,例如:$a = & $b,将$b的地址赋给$a,让$a、$b共同占用一个存储单元。
1 |
|
变量的作用域
按作用域划分,变量可分为局部变量和全局变量。
(1)局部变量
在主程序中或函数内部定义的变量称为局部变量。在主程序中定义的局部变量,其作用域局限于主程序,不能在函数内部使用;在函数内部定义的局部变量,其作用域局限于函数内部,不能在主程序中使用,例如:
1 |
|
在函数内部定义的局部变量,又可分为自动变量和静态变量。在函数内部使用static声明的变量称为静态变量;否则,称为自动变量。自动变量于静态变量的区别在于:对于自动变量,每调用一次函数,都会为自动变量分配存储单元,函数调用结束,自动变量所占的存储单元全部释放。对于静态变量,第一次调用函数时,为静态变量分配存储单元,函数调用结束,静态变量所占的存储单元不会被释放。例如:
1 |
|
(2)全局变量
在主程序中定义的局部变量,如果想在函数内部使用,可以在函数内部使用global关键字声明为全局变量,否则视为另外定义一个新的局部变量。声明全局变量的语句为 global变量名;
声明全局变量,并没有为变量分配存储单元。例如:
1 |
|
预定义变量
PHP预设了若干个数组,其中存储了运行环境,用户输入数据等,称为预定义变量,其作用域是全局自动有效。预定义变量主要有以下几种。
服务器变量$_SERVER
服务器变量是由Web服务器创建的数组,其内容包括文件的头部信息、路径、脚本位置等信息,常用的几个服务器变量
服务器变量名 | 变量的存储内容 |
---|---|
$_SERVER[‘HTTP_USER_AGENT’] | 用户使用的浏览器信息 |
$_SERVER[‘HTTP_HOST’] | host头信息,如localhost |
$_SERVER[‘SERVER_NAME’] | 服务器主机的名称,如localhost |
$_SERVER[‘SERVER_ADDR’] | 服务器的IP地址,如127.0.0.1 |
$_SERVER[‘SERVER_PORT’] | 服务器的端口号,如80 |
$_SERVER[‘REMOTE_ADDR’] | 当前浏览用户的IP地址 |
$_SERVER[‘DOCUMENT_ROOT’] | 文档根目录 |
$_SERVER[‘SCRIPT_FILENAME’] | 当前执行脚本的绝对路径名 |
$_SERVER[‘REMOTE_PORT’] | 用户连接到服务器时使用的端口号 |
$_SERVER[‘QUERY_STRING’] | URL中的请求字符串 |
$_SERVER[‘REQUEST_URI’] | 访问此页面所需的URI |
$_SERVER[‘SCRIPT_NAME’] | 包含当前脚本的路径 |
$_SERVER[‘PHP_SELF’] | 当前正在执行脚本的文件名 |
$_SERVER[‘REQUEST_TIME’] | 请求开始时的时间戳 |
$_SERVER[‘REQUEST_TIME_FLOAT’] | 同上,精确到微秒(PHP 5.4.0) |
环境变量$_ENV
环境变量记录着PHP运行环境相关的信息,如系统名,系统路径等,可以通过$_ENV[‘成员变量名’]的方式来访问环境变量,常用的成员变量名OS、Path等。
如果PHP是测试版本,使用环境变量是可能会出现找不到环境变量的问题,打开php.ini配置文件,找到variables_order=”GPCS”,将该行改成variables_order=”EGPCS”,然后保存并重启Apache服务器。
全局变量$GLOBALS
$GLOBALS变量以数组形式记录所有已经定义的全局变量。可以通过$GLOBALS[‘变量名’]访问程序的所有全局变量,它比使用global访问全局变量更方便。例如:
1 |
|
另外还有:$_COOKIE、$_GET、$_POST………………………..
外部变量
在PHP中,把程序中定义的变量叫做内部变量,而把表单中的变量(控件的名称)URL中的参数叫做外部变量,其值通过预定义变量$_GET、$_POST、$_REQUEST获得,
- $_GET[“表单变量”]:取得从客户端以GET方式传递过来的表单变量value值
- $_POST[“表单变量”]:取得从客户端以POST方式传递过来的表单变量value值
- $_REQUEST[“表单变量”]:取得从客户端以任意方式传递过来的表单变量value值
- $_REQUEST[“参数名”]:取得从客户端传递过来的参数值
1 | <!doctype html> |