热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

服务端PHP基础知识之变量、常量和数据类型

服务端-PHP-基础知识之变量、常量和数据类型

服务端 - PHP - 基础知识之变量、常量和数据类型

一、变量

1. 概述


































































序号内容描述
1解释变量是用于存储数据的容器
2定义方式$符。如$var_name
3变量类型因为 php 是弱类型语言,不需要在定义变量前声明变量的类型,所以变量的类型由变量的值决定
4赋值=号。如$name="peter"
5传递方式1.值传递:操作副本。将原变量的值赋值给一个新变量
2.引用传递:控制指针。给原变量起一个别名
6使变量变成引用传递在变量前加&取地址符。如&$name="Leo"
7可变变量变量名称可以动态改变,变量名来自另一个变量
8作用域1.函数作用域:使用function关键字创建的作用域,作用在函数作用域的变量有私有变量和静态变量。
2.全局作用域:函数之外的变量生效范围,作用在全局作用域的变量有全局变量和超全局变量。
9分类1.私有变量:函数中定义的变量
2.全局变量:函数之外定义的变量
3.超全局变量:也叫预定义变量,访问不受作用域限制
10过滤器用于对来自非安全来源的数据(比如用户输入)进行验证和过滤
11注意事项变量已定义而未初始化,默认使用 NULL 进行赋值

2. 可变变量
















序号内容描述
1定义方式在变量前再加一个$符。如$$name

3. 私有变量





















序号内容描述
1解释也叫动态变量,在函数中每一次都会自动初始化,并且无法在多次调用过程中保持不变
2作用域函数作用域

4. 静态变量




































序号内容描述
1解释定义在函数内部,静态变量的值不会因为退出函数而销毁
2定义方式在变量前加static关键字。如static $name
3作用域函数作用域
4特点1.在定义时必须初始化,且只能初始化一次,只能初始化为字符值或常量,默认为’0’
2.静态变量的值,可以在函数的多次调用中保持不变,即可带入下次调用中
3.当程序执行离开函数作用域后,静态变量的值不丢失
5应用场景实现累加效果:当多次调用同一函数,且要求每次调用之间共享或保留某些变量的时候

5. 全局变量


























序号内容描述
1解释函数之外定义的变量
2作用域全局作用域
3函数作用域内使用全局变量的方式1.使用 global 关键字
2.使用$GLOBALS 超全局数组

6. 超全局变量
























































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

7. 变量过滤器














































序号函数描述
1filter_list()查看系统中所有过滤器
2filter_id()查看所有过滤器 id
3filter_var()过滤单个变量
4filter_var_array()同时过滤多个变量
5filter_has_var()检测是否存在指定的外部变量
6filter_input()更安全的外部变量过滤器
7filter_input_array()同时过滤多个外部变量

8. 代码示例

  1. php
  2. echo '

    ';

  3. echo "一、使用静态变量实现累加效果";
  4. echo'';
  5. $sum = function() {
  6. static $n = 0;
  7. $n += 1;
  8. return $n;
  9. };
  10. echo $sum();
  11. echo '
    '
    ;
  12. echo $sum();
  13. echo '
    '
    ;
  14. echo $sum();
  15. echo '
    '
    ;
  16. echo '
    '
    ;
  17. echo '

    ';

  18. echo "二、函数作用域内使用全局变量的方式";
  19. echo'';
  20. echo '

    ';

  21. echo "1. 使用global关键字";
  22. echo'';
  23. $name = "小明1";
  24. echo "我的名字叫" . $name;
  25. function sayMyName1() {
  26. global $name;
  27. $name = "小红1";
  28. echo '
    '
    ;
  29. echo "我的名字叫" . $name;
  30. }
  31. echo sayMyName1();
  32. echo '

    ';

  33. echo "2. 使用\$GLOBALS超全局变量数组";
  34. echo'';
  35. $name = "小明2";
  36. echo "我的名字叫" . $name;
  37. function sayMyName2() {
  38. $GLOBALS['name'] = "小红2";
  39. echo '
    '
    ;
  40. echo "我的名字叫" . $GLOBALS['name'];
  41. }
  42. echo sayMyName2();
  43. echo '
    '
    ;
  44. echo '

    ';

  45. echo "三、使用变量过滤器过滤变量";
  46. echo'';
  47. echo '

    ';

  48. echo "1. 过滤单个变量";
  49. echo'';
  50. $n = 10;
  51. if (filter_var($n, 257)) :
  52. echo "已过滤1";
  53. else :
  54. echo "error2";
  55. endif;
  56. echo '
    '
    ;
  57. $n = 10.2;
  58. if (filter_var($n, 257)) :
  59. echo "已过滤1";
  60. else :
  61. echo "error2";
  62. endif;
  63. echo '

    ';

  64. echo "2. 同时过滤多个变量";
  65. echo'';
  66. echo "全部变量过滤成功";
  67. $data = ["name"=>"Peter", "age"=>12, "email"=>"xiaoming@qq.com"];
  68. $filters = [
  69. "name"=>["filter"=>FILTER_VALIDATE_REGEXP, "options"=>["regexp"=>"/^P(.*)/"]],
  70. "age"=>["filter"=>FILTER_VALIDATE_INT, "options"=>["min_range"=>10, "max_range"=>15]],
  71. "email"=>FILTER_VALIDATE_EMAIL
  72. ];
  73. echo '

    ';

  74. print_r(filter_var_array($data, $filters));
  75. echo '';
  76. echo "\$name变量过滤失败";
  77. $data = ["name"=>"peter", "age"=>12, "email"=>"xiaoming@qq.com"];
  78. $filters = [
  79. "name"=>["filter"=>FILTER_VALIDATE_REGEXP, "options"=>["regexp"=>"/^P(.*)/"]],
  80. "age"=>["filter"=>FILTER_VALIDATE_INT, "options"=>["min_range"=>10, "max_range"=>15]],
  81. "email"=>FILTER_VALIDATE_EMAIL
  82. ];
  83. echo '

    ';

  84. print_r(filter_var_array($data, $filters));
  85. echo '';
  86. echo '

    ';

  87. echo "3. 显示所有过滤器ID";
  88. echo'';
  89. echo '';
  90. foreach (filter_list() as $key => $value) {
  91. echo '
  92. '.''.''.'';
  93. }
  94. echo '
  95. '.$value.''.filter_id($value).'
    '
    ;
  96. ?>



二、常量

1. 概述




































序号内容描述
1解释常量是值的标识符,但值无法更变
2定义方式1.使用 define()函数:不能用在类中
2.使用 const 关键字:可以用在类中,不能用在函数和流程控制中
3作用域不受限制
4特点1.创建时必须初始化
2.禁止更新和删除
3.不受作用域限制
5注意事项推荐使用大写字母加下划线命名

2. 预定义常量


  • 预定义常量非常多,有许多与具体扩展相关,如 PDO

























































































































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

3. 魔术常量


  • 魔术常量也属于”预定义常量”。所谓”魔术”, 是指常量的值, 会随它们在代码中的位置改变而改变
  • 魔术常量不区分大小写, 但是推荐全部大写



















































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

三、数据类型




































序号内容描述
1解释固定大小内存的别名。给不同的数据分配合适的空间,确定合适的存储形式
2特点动态类型(弱类型)。不需要在使用变量前声明变量的类型,相同的变量可以用作不同的类型
3分类1.标量:字符串、整型、浮点型、布尔
2.复合:数组、对象
3.特殊:null
4.资源:resource
4判断is_string()is_int()is_bool()
5转换strval()intval()

四、课程总结


  • 今天学习了 PHP 的基础知识,通过上课认真听讲和认真完成老师布置的作业,使得我对 PHP 的理解和运用更加深入和熟悉。最主要的知识点是明白了变量、常量和数据类型的特点,以及了解并熟悉了变量、常量和数据类型的常用的操作。

推荐阅读
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • Spring常用注解(绝对经典),全靠这份Java知识点PDF大全
    本文介绍了Spring常用注解和注入bean的注解,包括@Bean、@Autowired、@Inject等,同时提供了一个Java知识点PDF大全的资源链接。其中详细介绍了ColorFactoryBean的使用,以及@Autowired和@Inject的区别和用法。此外,还提到了@Required属性的配置和使用。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 开发笔记:Java是如何读取和写入浏览器Cookies的
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Java是如何读取和写入浏览器Cookies的相关的知识,希望对你有一定的参考价值。首先我 ... [详细]
  • web.py开发web 第八章 Formalchemy 服务端验证方法
    本文介绍了在web.py开发中使用Formalchemy进行服务端表单数据验证的方法。以User表单为例,详细说明了对各字段的验证要求,包括必填、长度限制、唯一性等。同时介绍了如何自定义验证方法来实现验证唯一性和两个密码是否相等的功能。该文提供了相关代码示例。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • JSP内置对象之application的作用范围和获取方式
    本文介绍了JSP内置对象之application的作用时间范围、可以在不同浏览器获取的特点,以及获取application对象的方法。通过示例代码展示了在JSP中设置和在servlet中获取application对象的步骤。对于学习JSP内置对象的读者来说,本文具有一定的参考价值。摘要长度为163字。 ... [详细]
  • 如何在php文件中添加图片?
    本文详细解答了如何在php文件中添加图片的问题,包括插入图片的代码、使用PHPword在载入模板中插入图片的方法,以及使用gd库生成不同类型的图像文件的示例。同时还介绍了如何生成一个正方形文件的步骤。希望对大家有所帮助。 ... [详细]
author-avatar
手机用户2502924251
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有