Blogger Information
Blog 36
fans 0
comment 0
visits 27927
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php基础之变量与常量
小程_武汉_214945
Original
600 people have browsed it

1.变量作用域

  • php 中的变量作用域分为函数作用域和全局作用域,函数中创建的变量只能在函数作用域内生效,全局变量在函数外全局生效

  • php 中变量分为三种:全局变量,私有变量和超全局变量,对应由全局、函数内、系统预定义生成

  • php 中给出了一些超全局变量,由系统加载,在全局和函数内都可以调用

序号 变量名 描述
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 通过环境方式传递给当前脚本的变量的数组

示例:

  1. <?php
  2. // 声明全局变量
  3. $a=1;
  4. function aaa ():string{//7.0的函数声明方式functing:xxx():数据类型,用于限定返回值类型
  5. // 声明局部变量
  6. $a=2;
  7. return '局部变量a='.$a.'<br>全局变量a='.$GLOBALS['a'].'当前文件路径为'.$_SERVER['SCRIPT_NAME'];
  8. }
  9. echo aaa();

运行结果:

2.静态变量

  • 静态变量用 static 修饰,在函数中定义,与函数作用域绑定
  • 静态变量必须初始化且只能初始化一次,默认赋值为 0
  • 当程序执行离开函数域后静态变量值不消失,下次调用时可继续使用
  • 函数中的静态变量遵循私有变量约束,全局中不可调用

示例:

  1. <?php
  2. namespace a;
  3. //非静态变量,每次调用$a都会初始化
  4. function aaa():int{
  5. $a=1;
  6. return $a++;
  7. }
  8. echo aaa(),'<br>';
  9. echo aaa(),'<br>';
  10. echo aaa(),'<hr>';
  11. namespace b;
  12. //静态变量
  13. function aaa():int{
  14. static $a=1;
  15. return $a++;
  16. }
  17. echo aaa(),'<br>';
  18. echo aaa(),'<br>';
  19. echo aaa(),'<hr>';

运行结果:

3.变量过滤器

  • PHP 过滤器用于验证和过滤来自非安全来源的数据,比如用户的输入

  • 常用过滤器:
    filter_var() - 通过一个指定的过滤器来过滤单一的变量
    filter_var_array() - 通过相同的或不同的过滤器来过滤多个变量
    filter_input - 获取一个输入变量,并对它进行过滤
    filter_input_array - 获取多个输入变量,并通过相同的或不同的过滤器对它们进行过滤

代码示例:

  1. <?php
  2. // 用filter_var函数过滤10-90间的数
  3. $a=10;
  4. $b='20';//filter_var验证过程中会将变量转化为字符串,所以$b也会通过
  5. $c=100;
  6. var_dump(filter_var($a,FILTER_VALIDATE_INT,['options'=>['min_range'=>10,'max_range'=>90]]));
  7. var_dump(filter_var($b,FILTER_VALIDATE_INT,['options'=>['min_range'=>10,'max_range'=>90]]));
  8. var_dump(filter_var($c,FILTER_VALIDATE_INT,['options'=>['min_range'=>10,'max_range'=>90]]));
  9. echo '<hr>';
  10. //过滤邮箱
  11. $email='1adawara@qq.com';
  12. var_dump(filter_var($email,FILTER_VALIDATE_EMAIL));//FILTER_VALIDATE_EMAIL id 为274
  13. echo '<br>';
  14. var_dump(filter_var($email,274));//FILTER_VALIDATE_EMAIL id 为274,效果一样
  15. echo '<hr>';
  16. //filter_var_array同时过滤多个变量
  17. $d=['11','22','33','sdaf'];
  18. var_dump(filter_var_array($d,FILTER_VALIDATE_INT));
  19. echo '<hr>';
  20. //检测外部输入变量
  21. //get方式在url地址中传参 例:127.0.0.1/demo1.php?page=1
  22. //检测是否有get方式输入属性page
  23. var_dump(filter_has_var(INPUT_GET, 'page'));
  24. echo '<hr>';
  25. //检测get方式输入的属性page值是否为整数
  26. var_dump(filter_input(INPUT_GET,'page',FILTER_VALIDATE_INT));
  27. echo '<hr>';
  28. //检测多个外部输入变量
  29. // url:127.0.0.1/demo.php?password=13214
  30. $aaa=[
  31. 'username'=>FILTER_VALIDATE_INT,
  32. 'password'=>FILTER_VALIDATE_INT
  33. ];
  34. var_dump(filter_input_array(INPUT_GET,$aaa));

运行结果:

4.常量

  • 常量命名由字母数字下划线组成,不能是数字开头,一般用大写字母表示
  • 常量不加\$
  • 常用常量方法
定义方式 描述
get_defined_constants() 查看系统所有常量
defined() 检测常量是否存在
define() 创建常量
const 创建常量
constant() 获取常量值
  • 常见系统预定义常量
预定义常量 描述
PHP_VERSION PHP 版本
PHP_MAXPATHLEN PHP 路径最大长度:1024
PHP_OS_FAMILY 操作系统:Windows/Darwin/Linux
PHP_SAPI web 服务器与 php 之间接口: apache2handler
PHP_EOL 行尾结束符
PHP_INT_MAX 最大整数: 9223372036854775807
PHP_INT_MIN 最小整数: -9223372036854775808
PHP_INT_SIZE 整数宽度: 8
PHP_FLOAT_MAX 最大浮点数:1.7976931348623E+308
PHP_FLOAT_MIN 整小浮点数: 2.2250738585072E-308
DEFAULT_INCLUDE_PATH 默认 PHP 命令路径
PHP_EXTENSION_DIR 默认 PHP 扩展路径
E_ERROR 运行时错误: 致命中断
E_PARSE 语法解析错误: 致命中断
E_NOTICE 运行时提示: 不中断
E_WARNING 运行时警告: 不中断
E_ALL 所有级别错误(除E_STRICT)
E_STRICT 更加严格的错误处理机制,高于E_ALL
TRUE 布尔真
FALSE 布尔
NULL
DIRECTORY_SEPARATOR 目录分隔符
  • 常用魔术方法
魔术常量 描述
__LINE__ 文件中的当前行号
__FILE__ 文件的完整路径和文件名
__DIR__ 文件所在目录
__FUNCTION__ 当前的函数名称
__CLASS__ 当前类名称
__TRAIT__ 当前Trait名称
__METHOD__ 当前类方法名称
__NAMESPACE__ 当前命名空间名称
Correcting teacher:天蓬老师天蓬老师

Correction status:qualified

Teacher's comments:变量过滤器, 要多多练习
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments
Author's latest blog post