博客列表 >php基础之变量与常量

php基础之变量与常量

小程_武汉_214945
小程_武汉_214945原创
2020年04月17日 15:15:45606浏览

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__ 当前命名空间名称
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议