Blogger Information
Blog 11
fans 0
comment 0
visits 7559
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
php变量与常量的认识
老陈
Original
516 people have browsed it

变量

1.变量作用

全局作用域 函数之外的变量生效范围
函数作用域 使用 function 关键字创建的作用域
php 中没有块作用域的概念, 这与其它编程语言不同, 根据作用域不同, 变量可以分为三类:
序号 变量类型 描述
1 私有变量 函数中定义的变量
2 全局变量 函数之外定义的变量
3 超全局变量 也叫预定义变量,访问不受作用域限制

  1. //全局作用域
  2. $sitName = 'php中文网';
  3. //声明函数:同时也创建一个函数作用域
  4. function getInfo () : string
  5. {
  6. //在函数中无法访问全局作用域中的变量
  7. // $private = $sitName;
  8. //1.可通过关键字 global 声明函数中的私有变量
  9. global $sitName;
  10. //2.使用超全局变量:$GLOBALS
  11. //函数中可以直接访问超全局变量
  12. $private = $GLOBALS['sitName'];
  13. return $private;
  14. }
  15. echo getInfo();
超全局变量,也叫超全局数组,随系统加载,因此在所有脚本中均有定义,全局和函数中都可以访问。
序号 变量名 描述
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 通过环境方式传递给当前脚本的变量的数组

全局变量想了解更多请点击


静态变量

Static作用域当一个函数完成时,它的所有变量通常都会被删除。然而,有时候您希望某个局部变量不要被删除。要做到这一点,请在您第一次声明变量时使用 static 关键字:

  1. function text3() :float
  2. {
  3. //局部静态变量 只在函数第一次调用的时候初始化,以后不会再被更新了
  4. //静态变量:可以理解为函数中的“伪全局变量”
  5. //实现函数在多次调用的过程中共享数据
  6. static $sum = 0;
  7. $sum = $sum + 1;
  8. return $sum;
  9. }
  10. echo text3().'<br>';
  11. echo text3().'<br>';
  12. echo text3().'<br>';

变量过滤器

PHP过滤器用于验证和过滤来自非安全来源的数据。测试、验证和过滤用户输入或自定义数据是任何 Web 应用程序的重要组成部分。PHP 的过滤器扩展的设计目的是使数据过滤更轻松快捷。

序号 函数 描述
1 filter_var() 通过一个指定的过滤器来过滤单一的变量
2 filter_var_array() 通过相同的或不同的过滤器来过滤多个变量
3 filter_input 获取一个输入变量,并对它进行过滤
4 filter_input_array 获取多个输入变量,并通过相同的或不同的过滤器对它们进行过滤
  1. //例一:
  2. $age =30;
  3. //过滤器在验证的时候都是将变量转换成字符串验证的,所以 //$age ='30',也是正确的
  4. $age ='30';
  5. //过滤单个变量 filter_var()
  6. var_dump(filter_var($age,FILTER_VALIDATE_INT);
  7. //例二:
  8. //过滤多个变量filter_var_array()
  9. var_dump(filter_var_array([100,'php'],FILTER_VALIDATE_INT));
  10. //例三:
  11. var_dump(filter_input(INPUT_GET,'p',FILTER_VALIDATE_INT,['options'=>['min_range'=>1]]));
  12. //例四:
  13. //同时验证多个外部变量:filter_input_array()
  14. $args=[
  15. 'username'=> FILTER_SANITIZE_STRING,
  16. 'email'=>FILTER_VALIDATE_EMAIL,
  17. 'age'=> ['filter'=>FILTER_VALIDATE_INT,'flags'=>FILTER_REQUIRE_SCALAR,'options'=>['min_range'=>18,'max_range'=>60]],
  18. 'biog'=>FILTER_VALIDATE_URL,
  19. ];
  20. var_dump(filter_input_array(INPUT_GET,$args));

例4图解:

例4

常量

1.特征: PHP常量是一个简单值的标识符。该值在脚本中不能改变。一个常量由英文字母、下划线、和数字组成,但数字不能作为首字母出现。 (常量名不需要加 $ 修饰符)。
2.设置常量,使用 define() 函数,函数语法如下:
序号 参数 描述
1 name 必选参数,常量名称,即标志符
2 value 必选参数,常量的值
3 case_insensitive 可选参数,如果设置为 TRUE,该常量则大小写不敏感。默认是大小写敏感的

2. 函数/关键字

序号 定义方式 描述
1 get_defined_constants() 查看系统所有常量
2 defined() 检测常量是否存在
3 define() 创建常量
4 const 关键字 创建常量
5 constant() 获取常量值

get_defined_constants(true): 常量分组打印,自定义常量在user分组defined(): 返回布尔值。

  1. // 不区分大小写的常量名
  2. define("GREETING", "欢迎访问 php.cn");
  3. echo greeting;
  4. //const 关键字定义
  5. const GREETING ='PHP';
  6. //常量不受作用域限制
  7. function test1()
  8. {
  9. //define()可以在函数中使用 ,const不能在函数中使用
  10. define('SEX','男');
  11. echo SEX;
  12. }
  13. test1();
  14. //流程控制中,define能用 ,const不能用
  15. if(true){
  16. define('EMAIL','123@163.COM');
  17. // const EMAIL = '123@163.com';
  18. echo EMAIL;
  19. }
  20. //const 用在类中,创建类常量
  21. class Demo1{
  22. const BBB = '123456@163.com';
  23. }
  24. echo Demo1::BBB;
  25. //常量通常只允许标量进行初始化
  26. //标量:单值变量,字符串,数值,布尔,null
  27. //php7.0支持数组初始化常量
  28. const DB_LINKS =[
  29. 'host'=>'localhost',
  30. 'username'=>'root',
  31. 'password'=>'root',
  32. 'charset'=>'utf8',
  33. ];
  34. echo '<pre>'.print_r(DB_LINKS,true).'</pre>';
  35. // constant()
  36. define('','其实我也是一个常量');
  37. echo constant('');
  38. //魔术常量
  39. echo '当前行号:'.__LINE__.'<br>';
  40. echo '当前文件:'.__FILE__.'<br>';
  41. echo '当前目录:'.__DIR__.'<br>';
  42. function hello123(){
  43. echo __METHOD__;
  44. }
  45. hello123();
  46. echo '<hr>';
  47. class D {
  48. public function index(){
  49. echo __METHOD__;
  50. }
  51. }
  52. (new D)->index();
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