一、变量基础特性
1、基本介绍
-
PHP 是弱类型语言,变量无需预先声明类型
-
变量命名以
$
符号开头,可包含字母、数字和下划线 -
变量命名不能以数字开头,区分大小写
2、演示
$username = 'jack';
$userName = '';
$count = 0;
$_count = 10;
echo $username . "\n";
echo $userName . "\n";
echo $count . "\n";
echo $_count . "\n";
# 输出结果
jack
0
10
二、变量作用域
1、局部变量
(1)基本介绍
-
定义范围:在函数内部声明
-
生命周期:从变量声明开始到函数执行结束
-
访问限制:只能在声明它的函数内部访问
(2)演示
- 局部变量只能在声明它的函数内部访问,在外部访问会报错
function func()
{
$temp = 10;
echo $temp . "\n";
}
echo $temp . "\n";
# 输出结果
10
PHP Warning: Undefined variable $temp
- 不同函数中的同名局部变量互不干扰
function funcA()
{
$temp = 10;
echo $temp . "\n";
}
function funcB()
{
$temp = 100;
echo $temp . "\n";
}
funcA();
funcB();
# 输出结果
10
100
- 函数参数也是局部变量
function greet($name)
{
echo "Hello, $name";
}
greet('jack');
# 输出结果
Hello, jack
2、全局变量
(1)基本介绍
-
定义范围:在函数外部声明
-
生命周期:从声明开始到脚本执行结束
-
访问限制:函数内部不能直接访问
(2)演示
- 函数内部不能直接访问全局变量
$globalCounter = 0;
function increment()
{
$globalCounter++;
echo $globalCounter . "\n";
}
increment();
echo $globalCounter . "\n";
# 输出结果
PHP Warning: Undefined variable $globalCounter
1
0
- 通过 global 关键字访问全局变量
$globalCounter = 0;
function increment()
{
global $globalCounter;
$globalCounter++;
echo $globalCounter . "\n";
}
increment();
echo $globalCounter . "\n";
# 输出结果
1
1
- 通过
$GLOBALS
超全局变量访问全局变量
$globalCounter = 0;
function increment()
{
$GLOBALS['globalCounter']++;
echo $GLOBALS['globalCounter'] . "\n";
}
increment();
echo $globalCounter . "\n";
# 输出结果
1
1
3、静态变量
(1)基本介绍
-
定义范围:在函数内部声明
-
生命周期:函数多次调用间保持值
-
限制:只在第一次调用时初始化
(2)演示
function trackCalls()
{
static $count = 0;
$count++;
echo $count . "\n";
}
trackCalls();
trackCalls();
# 输出结果
1
2
三、变量高级特性
1、可变变量
(1)基本介绍
- 可变变量允许通过变量的值来动态地访问另一个变量
(2)演示
$varName = 'message';
$$varName = 'Hello World';
echo $message;
# 输出结果
Hello World
2、超全局变量
(1)基本介绍
-
超全局变量是一类特殊的预定义变量
-
超全局变量在脚本的全部作用域中自动可用,无需使用 global 关键字声明
超全局变量 | 说明 |
---|---|
$GLOBALS | 引用全局作用域中可用的全部变量 |
$_SERVER | 服务器和执行环境信息 |
$_GET | HTTP GET 变量 |
$_POST | HTTP POST 变量 |
$_FILES | HTTP 文件上传变量 |
$_COOKIE | HTTP Cookies |
$_SESSION | Session 变量 |
$_REQUEST | HTTP Request 变量(包含 GET、POST、COOKIE) |
$_ENV | 环境变量 |
(2)演示
$globalCounter = 0;
function increment()
{
$GLOBALS['globalCounter']++;
echo $GLOBALS['globalCounter'] . "\n";
}
increment();
echo $globalCounter . "\n";
# 输出结果
1
1