博客列表 >PHP基础知识:php变量

PHP基础知识:php变量

李东亚¹⁸⁰³⁹⁵⁴⁰¹²⁰
李东亚¹⁸⁰³⁹⁵⁴⁰¹²⁰原创
2020年04月18日 21:51:281086浏览

变量

一、数据类型:

数据类型 详细数据类型
基本类型 string、(int、folat)、Boolean(true、false)
符合类型 class、array
特殊类型 NULL、resource(资源)

二、变量作用域(php中没有块作用域)

1、全局作用域:函数之外的作用域
2、函数作用域:使用function关键字创建的作用域
3、根据变量作用域不同变量分为:

变量类型 描述
私有变量 函数中定义的变量
全局变量 函数之外定义的变量
超全局变量 也叫预定义变量,访问不受作用域限制

三、静态变量(与之相对应:私有变量也叫动态变量,函数每一次调用访问都会被初始化;)

1、静态变量有关键字:static 声明定义;
2、在函数中的静态变量,定义时必须初始化(只能初始化一次且不能更新,默认值为0;);并且和函数作用域绑定
3、函数执行完毕时(离开函数作用域),静态值不丢失;可在函数多次调用中保持不变
4、函数中静态变量遵循私有变量约束,外部不可访问;

四、超全局变量

1、超全局变量,也叫超全局数组,随系统加载,因此在所有脚本中均有定义,全局和函数中都可以访问;
2、常见的超全局变量:

变量名 描述
$GLOBALS 引用全局作用域中可用的全部变量
$_SERVER 服务器和执行环境信息
$_GET HTTP GET 请求:通过 URL 参数传递给当前脚本的变量的数组
$_POST HTTP POST 请求: 将变量以关联数组形式传入当前脚本
$_FILES HTTP 文件上传变量,保存着上传文件的全部信息
$_COOKIE 通过 HTTP Cookies 方式传递给当前脚本的变量的数组
$_SESSION 当前脚本可用 SESSION 变量的数组
$_REQUEST 默认情况下包含了 $_GET$_POST$_COOKIE 的数组
$_ENV 通过环境方式传递给当前脚本的变量的数组

五、常量

1、常量(推荐使用大写字符和下划线):与变量相比常量前面没有$符号;常量创建时必须初始化且禁止更新和删除;常量不受作用域限制
2、相关函数和关键字:
a、查询系统所有常量:get_defined_constants();设置参数true分组打印,自定义常量在user分组中
b、查询常量是否存在:defined();返回布尔值
c、定义顶常量:define();和关键字const声明定义(const关键字定义常量无法在函数中和流程控制中使用)
d、获取常量值:constant();
3、常量:预定义常量(魔术常量)
1、常见预定义常量

序号 预定义常量 描述
1 PHP_VERSION PHP 版本
2 PHP_MAXPATHLEN PHP 路径最大长度:1024
3 PHP_OS_FAMILY 操作系统:Windows/Darwin/Linux
4 PHP_SAPI web 服务器与 php 之间接口: apache2handler
5 PHP_EOL 行尾结束符
6 PHP_INT_MAX 最大整数: 9223372036854775807
7 PHP_INT_MIN 最小整数: -9223372036854775808
8 PHP_INT_SIZE 整数宽度: 8
9 PHP_FLOAT_MAX 最大浮点数:1.7976931348623E+308
10 PHP_FLOAT_MIN 整小浮点数: 2.2250738585072E-308
11 DEFAULT_INCLUDE_PATH 默认 PHP 命令路径
12 PHP_EXTENSION_DIR 默认 PHP 扩展路径
13 E_ERROR 运行时错误: 致命中断
14 E_PARSE 语法解析错误: 致命中断
15 E_NOTICE 运行时提示: 不中断
16 E_WARNING 运行时警告: 不中断
17 E_ALL 所有级别错误(除E_STRICT)
18 E_STRICT 更加严格的错误处理机制,高于E_ALL
19 TRUE 布尔真
20 FALSE 布尔假
21 NULL
22 DIRECTORY_SEPARATOR 目录分隔符

2、魔术常量

序号 魔术常量 描述
1 __LINE__ 文件中的当前行号
2 __FILE__ 文件的完整路径和文件名
3 __DIR__ 文件所在目录
4 __FUNCTION__ 当前的函数名称
5 __CLASS__ 当前类名称
6 __TRAIT__ 当前Trait名称
7 __METHOD__ 当前类方法名称
8 __NAMESPACE__ 当前命名空间名称

代码练习

1、代码:

  1. <?php
  2. $name='ldy';
  3. echo $GLOBALS["name"];
  4. // echo '<pre>'.print_r($GLOBALS,true).'</pre>';
  5. function sum(){
  6. // 私有变量
  7. $city='河南';
  8. // global $name;
  9. // return $name;
  10. // $GLOBALS 超全局变量
  11. return $GLOBALS['name'].'是'.$city;
  12. }
  13. echo sum();
  14. echo '<br>';
  15. echo print_r($_SERVER['SCRIPT_NAME'],true);
  16. echo '<hr>';
  17. // 静态变量演示
  18. function get_count(){
  19. static $n=0;
  20. $n++;
  21. return $n;
  22. }
  23. echo get_count();
  24. echo '<br>';
  25. echo get_count();
  26. echo '<br>';
  27. echo get_count();
  28. // 过滤器
  29. echo '<hr>';
  30. $num1=41;
  31. echo filter_var($num1,FILTER_VALIDATE_INT,["options"=>['min_range'=>18,'max_range'=>45]]);
  32. $email='ldy@php.cn';
  33. echo filter_var($email,FILTER_VALIDATE_EMAIL);
  34. echo '<br>';
  35. $a=1;
  36. $b="a";
  37. print_r(filter_var_array([$a,$b],FILTER_VALIDATE_INT));
  38. echo '<br>';
  39. var_dump(filter_var_array([100, 'php'], FILTER_VALIDATE_INT));
  40. echo '<br>';
  41. // 检测是否存在指定的外部变量:返回布尔值
  42. var_dump( filter_has_var(INPUT_GET,'p'));
  43. echo '<hr>';
  44. echo filter_input(INPUT_GET,'p',FILTER_VALIDATE_INT,['options'=>['min_range'=>1,'max_range'=>30]]) ? '页码正确':'页码不能超过30';
  45. $user=[
  46. 'email'=>FILTER_VALIDATE_EMAIL,
  47. 'age'=>['filter'=>FILTER_VALIDATE_INT,'flags'=>FILTER_REQUIRE_SCALAR,'options'=>['min_range'=>18,'max_range'=>100]],
  48. 'blog'=>FILTER_VALIDATE_URL
  49. ];
  50. echo '<pre>'.print_r(filter_input_array(INPUT_GET,$user),true).'</pre>';
  51. // 常量
  52. echo '<hr>';
  53. // echo '<pre>'.print_r(get_defined_constants(true),true).'</pre>';
  54. define('ABC',__FILE__);
  55. echo ABC.'<br>';
  56. echo __DIR__;
  57. const COUSER="php";
  58. echo '<hr>';
  59. class AbC
  60. {
  61. const DOC='PHP';
  62. function getName(){
  63. define('BOC','我是一个常量');
  64. return BOC;
  65. }
  66. }
  67. echo __LINE__.'<br>';
  68. echo AbC::DOC;
  69. echo (new AbC)->getName();
  70. echo '<br>';
  71. // dirname(__FILE__)和__DIR__
  72. echo dirname(__FILE__);

2、运行结果

总结

1、变量的作用域:函数作用域
2、超全局变量、常量不受作用域限制
3、超全局变量和魔术常量需要强制记忆;实战使用率较高!
4、静态变量常用来统计页面浏览次数和函数次数;
5、过滤器在网站实战中比较重要!

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