1. 变量的作用域
- 变量的作用域指变量可以被访问到的范围
- 函数作用域:在函数中定义的变量,只在函数中生效,可以被访问
- 全局作用域:定义在函数体外,可以在函数体外被访问到
超全局变量,系统预定义的变量,可以在任何位置访问
常用超全局变量:
序号 | 变量名 | 描述 |
---|---|---|
1 | $GLOBALS |
引用全局作用域中可用的全部变量 |
2 | $_SERVER |
服务器和执行环境信息 |
3 | $_GET |
HTTP GET 请求:通过 URL 参数传递给当前脚本的变量的数组 |
4 | $_POST |
HTTP POST 请求: 将变量以关联数组形式传入当前脚本 |
5 | $_FILES |
HTTP 文件上传变量,保存着上传文件的全部信息 |
6 | $_COOKIE |
通过 HTTP Cookies 方式传递给当前脚本的变量的数组 |
7 | $_SESSION |
当前脚本可用 SESSION 变量的数组 |
8 | $_REQUEST |
默认情况下包含了 $_GET ,$_POST 和 $_COOKIE 的数组 |
9 | $_ENV |
通过环境方式传递给当前脚本的变量的数组 |
2. 静态变量
- 使用
static
修饰符可以将变量定义为静态变量 - 在函数中定义静态变量,静态变量的值会保留
function testStatic(){
static $test1=5;
$test2=8;
return $test1++.'---'.$test2;
}
echo testStatic();
echo '<br>';
echo testStatic();
echo '<br>';
echo testStatic();
echo '<br>';
echo testStatic();
输出结果:
5---8
6---8
7---8
8---8
3. 变量过滤器
- 可以通过一些预定义的方式对变量进行检测
- 通过filter_list()可以查看有哪些过滤器
过滤单个变量示例:
$age= 23;
echo filter_var($age,FILTER_VALIDATE_INT,['option'=>['min_range'=>14,'max_range'=>70]]);
$age= '90';
var_dump(filter_var($age,FILTER_VALIDATE_INT,['options'=>['min_range'=>14,'max_range'=>70]]));
输出结果:
23
bool(false)
过滤多个变量示例:
$arr= [10,'php'];
var_dump(filter_var_array($arr,FILTER_VALIDATE_INT));
输出结果:
array(2) { [0]=> int(10) [1]=> bool(false) }
4.常量
- 常量用来保存代码中不需要更新的数据
- 通过
get_defined_constants()
查看当前有哪些常量 - 有系统预定义常量和自定义常量
- 可通过
define(常量名,常量值)
自定义常量 - 或者使用const关键字定义常量
常用常量示例:
echo 'PHP版本:'.PHP_VERSION;
echo '<br>';
echo '操作系统:'.PHP_OS_FAMILY;
输出结果:
PHP版本:7.3.4
操作系统:Windows
5. 魔术常量
- 魔术常量也属于预定义常量,但是它的值会随位置不同而变化
- 常用魔术常量:
序号 | 魔术常量 | 描述 |
---|---|---|
1 | __LINE__ |
文件中的当前行号 |
2 | __FILE__ |
文件的完整路径和文件名 |
3 | __DIR__ |
文件所在目录 |
4 | __FUNCTION__ |
当前的函数名称 |
5 | __CLASS__ |
当前类名称 |
6 | __TRAIT__ |
当前Trait 名称 |
7 | __METHOD__ |
当前类方法名称 |
8 | __NAMESPACE__ |
当前命名空间名称 |
<?php
echo '当前行号:'.__LINE__;
echo '<br>';
echo '当前行号:'.__LINE__;
echo '<br>';
echo '当前行号:'.__LINE__;
echo '<br>';
echo '文件目录:'.__DIR__;
输出结果:
当前行号:3
当前行号:5
当前行号:7
文件目录:E:\phpstudy_pro\WWW\php11\php
6. 总结
- php内置了很多预定义变量和函数,合理使用能大大提高编程效率