全局变量,静态变量,可变变量和引用变量。
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 变量只有一个单独的范围。这个单独的范围跨度同样包含了 include 和 require 引入的文件。
使用global,或者$GLOBALS['b']
$a = 1;
$b = 2;
function sum()
{
global $a, $b;
$b = $a + $b;
}
sum();
echo $b;
输出为3
静态变量
变量范围的另一个重要特性是静态变量。静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。
function test()
{
static $a = 0;
echo $a.PHP_EOL;
$a++;
}
test();
test();
输出为
0
1
一个变量的变量名可以动态的设置和使用
$a = 'hello';
$$a = 'world';
var_dump($a,$hello);
结果输出
string(5) "hello"
string(5) "world"