## 变量范围
变量的范围即它定义的上下文背景,大部分的 PHP 变量只有一个单独的范围。
### 文件包含
```
<?php
$a = 1;
include 'b.php';
?>
```
b.php 内容如下:
```
<?php
$b = $a + 1;
echo $b; // 2
?>
```
### 函数局部变量
在用户自定义函数中,一个局部函数范围将被引入。任何用于函数内部的变量按缺省情况将被限制在局部函数范围内。例如:
```
<?php
$a = 1; // global scope
function test()
{
echo $a; // reference to local scope variable
}
test();
?>
```
### global 关键字
```
<?php
$a = 1;
$b = 2;
function sum()
{
global $a, $b;
$b = $a + $b;
}
sum();
echo $b; // 3
?>
```
以上脚本的输出将是“3”。在函数中声明了全局变量 $a 和 $b 之后,对任一变量的所有引用都会指向其全局版本。对于一个函数能够声明的全局变量的最大个数,PHP 没有限制。
### $GLOBALS 超全局数组
在全局范围内访问变量的第二个办法,是用特殊的 PHP 自定义 $GLOBALS 数组。前面的例子可以写成:
```
<?php
$a = 1;
$b = 2;
function sum()
{
$GLOBALS['b'] = $GLOBALS['a'] + $GLOBALS['b'];
}
sum();
echo $b; // 3
?>
```
### 静态变量(static variable)
静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。看看下面的例子:
```
<?php
function test()
{
static $a = 0;
echo $a;
$a++;
}
test(); // 0
test(); // 1
test(); // 2
?>
```
- 基本语法
- PHP标记
- 指令分隔符
- 从HTML中分离
- 注释
- 数据类型
- 布尔值
- 整数
- 浮点数
- 字符串
- 数组
- 对象
- 资源
- 空值
- 变量
- 基础
- 预定义变量
- 变量范围
- 可变变量
- 常量
- 常量语法
- 魔术常量
- 运算符
- 算术运算符
- 赋值运算符
- 位运算符
- 比较运算符
- 递增与递减运算符
- 逻辑运算符
- 字符串运算符
- 数组运算符
- 类型运算符
- 流程控制
- if条件结构
- switch条件结构
- while循环结构
- do-while循环结构
- for循环结构
- foreach循环结构
- 包含文件
- 函数
- 自定义函数
- 可变函数
- 匿名函数
- 递归函数
- 类与对象
- 基本概念
- 属性
- 方法
- 类常量
- 构造函数和析构函数
- 访问控制
- 继承
- 抽象类
- 接口
- Trait
- 重载
- 对象遍历
- 魔术方法
- Final关键字
- 命名空间
- 自动加载
- 错误处理
- 错误显示
- 错误日志
- 错误报告
- 自定义错误处理
- 异常处理
- 异常处理机制
- 扩展异常处理类
- 字符操作
- 数组操作
- 时间操作
- 表单操作
- GET提交
- POST提交
- 文件上传
- 会话控制
- COOKIE操作
- SESSION操作
- 文件操作
- 文件属性
- 读取文件
- 写入文件
- 文件管理
- 文件锁
- 目录处理
- 路径处理
- 网络操作
- HTTP协议
- Socket操作
- CURL操作
- PDO操作
- 介绍
- 连接管理
- 预处理语句
- 事务处理
- 错误处理
- 图像操作
- 正则表达式
- 标准推荐
- 包管理器
- 设计模式
- 常用算法
- 安全防御
- XSS防御
- CSRF防御