批改状态:合格
老师批语:写的还行!尽量跟上老师讲课的进度!
变量分为局部变量和全局变量,作用域就是变量的生效范围
1.变量作用域,示例:
$demo = '变量';//全局作用域function demo(){$demo1 = '函数内变量';//函数作用域}echo $demo; //输出结果echo $demo1;//不会打印变量,因其作用域在函数demo内,只能在函数内部使用
2.全局变量,示例:
$demo = '变量';$demo1 = '变量123';function demo(){// 声明一个全局变量,声明为全局变量才能对外部变量修改global $demo1;return $demo1;}echo $demo;//输出结果echo demo();//输出结果
3.超全局变量\$GLOBALS,(\$GLOBALS 是一个预定义的超全局数组,其中包含了全局作用域中的所有可用变量,变量的名字就是数组的键。)
/*global和$GLOBALS 区别:global $var 指的是对函数外部同名变量的引用,是两个互不影响的变量,而 $GLOBALS['var'] 指的是函数外部变量本身。*/$demo = '变量';$demo1 = '变量123';function demo(){return $GLOBALS['demo1'];}echo $GLOBALS['demo'];
常量类似变量,贯穿整个脚本是自动全局的,但是常量一旦被定义就无法更改,有效的常量名以字符或下划线开头(常量名称前面没有 $ 符号),通常使用大写字母定义常量,不能使用数字开头;
- 常量有2种定义方式:
1.使用const关键字;
2.使用define()函数;- 系统常量,可以使用print_r(get_defined_constants());查看所有系统常量
// const 定义const DEMO= '常量';// 函数define定义define('DEMO1', 'define定义常量');//类中的常量只能用const定义class demo{const DEMO2='类中的常量';function demo2(){//在类里面访问定义的类常量用self关键字;self的代表的就是当前类echo self::DEMO2;}}//类外常量的访问echo demo::DEMO2;//constant,返回一个常量的值:echo constant('DEMO');// 查询用户自定义的常量print_r(get_defined_constants(true)['user']);2.1 预定义常量
| 序号 | 魔术常量 | 描述 |
| —— | —————————- | ————— |
| 1 | PHP_VERSION | 版本号 |
| 2 | PHP_OS_FAMILY | 操作系统 |
| 3 | PHP_INT_MAX | 最大整数 |
| 4 | PHP_FLOAT_MAX | 最大浮点数 |
| 5 | DIRECTORY_SEPARATOR | 目录分隔符 |
| 序号 | 魔术常量 | 描述 |
|---|---|---|
| 1 | __LINE__ |
文件中的当前行号 |
| 2 | __FILE__ |
文件的完整路径和文件名 |
| 3 | __DIR__ |
文件所在目录 |
| 4 | __FUNCTION__ |
当前的函数名称 |
| 5 | __CLASS__ |
当前类名称 |
| 6 | __TRAIT__ |
当前Trait名称 |
| 7 | __METHOD__ |
当前类方法名称 |
| 8 | __NAMESPACE__ |
当前命名空间名称 |
| 9 | __FILE__ |
当前文件 |
| 10 | __DIR__ |
当前目录 |
| 11 | __LINE__ |
当前行号 |
//全局成员,不允许重复定义,因此使用命名空间来定义namespace demo {const TEST = '第一个命名空间';}namespace demo1 {const TEST = '第二个命名空间';}//全局空间: 匿名空间namespace {echo \demo\TEST, "<br>";echo \demo1\TEST, "<br>";}
| 序号 | 函数 | 描述 |
|---|---|---|
| 1 | filter_list() |
当前php版本支持的预定义过滤器 |
| 2 | filter_id() |
返回指定过滤器的 ID 号 |
| 3 | filter_var() |
过滤单个变量 |
| 4 | filter_var_array() |
过滤多个变量 |
| 5 | filter_has_var() |
检测是否存在某个外部变量 |
| 6 | filter_input() |
过滤单个外部变量 |
| 7 | filter_input_array() |
过滤多个外部变量 |
| 序号 | 过滤器函数 | 描述 |
|---|---|---|
| 1 | FILTER_VALIDATE_INT |
验证整数 |
| 2 | FILTER_VALIDATE_FLOAT |
浮点点验证 |
| 3 | FILTER_VALIDATE_BOOLEAN |
验证布尔项 |
| 4 | FILTER_VALIDATE_EMAIL |
验证邮箱 |
| 5 | FILTER_VALIDATE_URL |
验证 URL 地址 |
| 6 | FILTER_VALIDATE_IP |
验证 IP 地址 |
| 7 | FILTER_VALIDATE_REGEXP |
正则验证 |
FILTER_VALIDATE_BOOLEAN: 布尔选项的返回值类型| 序号 | 返回值 | 描述 |
|---|---|---|
| 1 | true |
“1”, “true”, “on” 和 “yes” |
| 2 | false |
“0”, “false”, “off”, “no”, “” |
| 3 | null |
除以上情形外 |
| 序号 | 过滤器函数 | 描述 |
|---|---|---|
| 1 | FILTER_UNSAFE_RAW |
保持原始数据 |
| 2 | FILTER CALLBACK |
自定义函数过滤数据 |
| 3 | FILTER_SANITIZE_STRING |
去除标签以及特殊字符:strip_tags() |
| 4 | FILTER_SANITIZE_STRIPPED |
“string” 过滤器别名 |
| 5 | FILTER_SANITIZE_ENCODED |
URL-encode 字符串,去除或编码特殊字符 |
| 6 | FILTER_SANITIZE_SPECIAL_CHARS |
HTML 转义字符, 等价于 htmlspecialchars() |
| 7 | FILTER_SANITIZE_EMAIL |
仅保留邮箱地址的合法字符 |
| 8 | FILTER_SANITIZE_URL |
仅保留合法的 URL, 必须从协议开始http/https |
| 9 | FILTER_SANITIZE_NUMBER_INT |
仅保留合法的数字和正负号+- |
| 10 | FILTER_SANITIZE_NUMBER_FLOAT |
仅保留合法的数字和正负号+- 以及指数 .,eE |
| 11 | FILTER_SANITIZE_MAGIC_QUOTES |
等价于函数: addslashes() |
示例:
//显示当前PHP版本的预定义过滤器foreach (filter_list() as $filter_items){echo filter_id($filter_items). '->'.$filter_items.'<br>';}// 1.单个变量过滤filter_var(variable, filter, options)$num=5;$str='AAA';var_dump(filter_var($str,FILTER_VALIDATE_INT));//输出bool(false)$options = ['options'=>['min_range'=> 18]];//规定一个包含标志/选项的关联数组或者一个单一的标志/选项。检查每个过滤器可能的标志和选项。var_dump(filter_var($num, FILTER_VALIDATE_INT, $options));//输出bool(false)//2.多个变量过滤:filter_var_array()$person = ['name' => '小刚', 'age' => 10, 'sex' => '男'];var_dump(filter_var_array($person, FILTER_VALIDATE_INT));//输出array(3) { ["name"]=> bool(false) ["age"]=> int(10) ["sex"]=> bool(false) }//外部变量过滤:filter_input(输入类型, 变量名, 过滤器, 可选参数)//获取浏览器地址中ID值echo 'id = ' .$_GET['id'];//设置过滤条件ID最小值为1$options = ['options'=>['min_range'=> 1]];var_dump(filter_input(INPUT_GET,'id',FILTER_VALIDATE_INT,$options));//同时验证多个外部变量//url=http://php.edu/0703/1.php?name=jack&email=abc@qq.com&age=33$data = ['name'=> FILTER_SANITIZE_STRING,'email'=>FILTER_VALIDATE_EMAIL,'age'=> ['filter'=>FILTER_VALIDATE_INT, 'options'=>['min_range'=> 25, 'max_range'=> 55]],];var_dump(filter_input_array(INPUT_GET, $data ));//输出array(3) { ["name"]=> string(4) "jack" ["email"]=> string(10) "abc@qq.com" ["age"]=> int(33) }
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号