浅析php中常量,变量的作用域和生存周期


Posted in PHP onAugust 10, 2013

在PHP脚本中变量主要有:内置超级全局变量,一般的变量,常量,全局变量,静态变量等等,我们在使用它们的时候除了要正确地知道它们的语法以外,更重要的是,我们要知道它们在本质上的区别与联系—即它们的作用域的问题。

1.内置超级全局变量可以在脚本的任何地方使用和可见。即是说,如果我们在一个PHP页面中改变了其中的一个值,那么在其他PHP页面中使用时,它的值也会发生改变。

2.常量一旦被声明将可以在全局可见,也就是说,它们可以函数内外使用,但是这仅仅限于一个页面之中(包含我们通过include和include_once)包含进来的PHP脚本,但是在其他的页面之中就不能使用了。

3.在一个脚本中声明的全局变量在整个脚本中是可见的,但不是在函数内部,在函数内部的变量如果与全局变量名称相同,以函数内部的变量为准。

4.函数内部使用的变量声明为全局变量时,其名称要与全局变量的名称一致,在这样的情况下,我们就可以在函数中使用函数外部的全局变量了,这样就可以避免上一种因为函数内部的变量与外部的全局变量名称相同而覆盖了外部变量这样的情况。

5.在函数内部创建并声明为静态的变量无法在函数外部可见,但是可以在函数的多次执行过程中保持该值,最常见的情况就是在函数的递归执行的过程之中。

6.在函数内部创建的变量对函数来说是本地的,而当函数终止时,该变量也就不存在了。

超级全局变量的完整列表如下:
1.$GOBALS  所有全局变量数组
2.$_SERVER  服务器环境变量数组
3.$_POST  通过POST方法传递给该脚本的变量数组
4.$_GET  通过GET方法传递给该脚本的变量数组
5.$_COOKIE  cookie变量数组
6.$_FILES  与文件上传相关的变量数组
7.$ENV 环境变量数组
8.$_REQUEST 所有用户输入的变量数组包括$_GET $_POST $_COOKIE 所包含的输入内容
9.$_SESSION  会话变量数组

我们要注意的是:变量和常量另一个重要的差异是:常量只可以定义boolean(布尔型),integer(整型),float(浮点型) 和 string(字符串型)数据,但不能定义 resource类型的数据。

PHP 相关文章推荐
php 高效率写法 推荐
Feb 21 PHP
探寻PHP脚本不报错的原因
Jun 12 PHP
ThinkPHP使用smarty模板引擎的方法
Jul 01 PHP
几道坑人的PHP面试题 试试看看你会不会也中招
Aug 19 PHP
php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
Nov 18 PHP
2014最热门的24个php类库汇总
Dec 18 PHP
Cygwin中安装PHP方法步骤
Jul 04 PHP
使用图灵api创建微信聊天机器人
Jul 23 PHP
php上传excel表格并获取数据
Apr 27 PHP
PHP读取CSV大文件导入数据库的实例
Jul 24 PHP
php 提交表单 关闭layer弹窗iframe的实例讲解
Aug 20 PHP
Yii中特殊行为ActionFilter的使用方法示例
Oct 18 PHP
浅析linux下apache服务器的配置和管理
Aug 10 #PHP
本地机apache配置基于域名的虚拟主机详解
Aug 10 #PHP
php 删除目录下N分钟前创建的所有文件的实现代码
Aug 10 #PHP
php中如何判断一个网页请求是ajax请求还是普通请求
Aug 10 #PHP
php一些错误处理的方法与技巧总结
Aug 10 #PHP
Zend Studio 实用快捷键一览表(精心整理)
Aug 10 #PHP
php对csv文件的读取,写入,输出下载操作详解
Aug 10 #PHP
You might like
memcached 和 mysql 主从环境下php开发代码详解
2010/05/16 PHP
在Ubuntu 18.04上安装PHP 7.3 7.2和7.0的方法
2019/04/09 PHP
Laravel框架中缓存的使用方法分析
2019/09/06 PHP
Laravel6.0.4中将添加计划任务事件的方法步骤
2019/10/15 PHP
一个js拖拽的效果类和dom-drag.js浅析
2010/07/17 Javascript
关于div自适应高度/左右高度自适应一致的js代码
2013/03/22 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
2014/10/17 Javascript
JS中FRAME的操作问题实例分析
2014/10/21 Javascript
浅谈javascript中的instanceof和typeof
2015/02/27 Javascript
浅谈JavaScript异常处理语句
2015/06/26 Javascript
AngularJS directive返回对象属性详解
2016/03/28 Javascript
jQuery弹出层后禁用底部滚动条(移动端关闭回到原位置)
2016/08/29 Javascript
seajs模块之间依赖的加载以及模块的执行
2016/10/21 Javascript
jQuery UI制作选项卡(tabs)
2016/12/13 Javascript
基于javascript的异步编程实例详解
2017/04/10 Javascript
angular实现图片懒加载实例代码
2017/06/08 Javascript
浅谈ng-zorro使用心得
2018/12/03 Javascript
Vue开发之封装分页组件与使用示例
2019/04/25 Javascript
layui实现左侧菜单点击右侧内容区显示
2019/07/26 Javascript
Python中实现最小二乘法思路及实现代码
2018/01/04 Python
PyCharm代码整体缩进,反向缩进的方法
2018/06/25 Python
elasticsearch python 查询的两种方法
2019/08/04 Python
python各类经纬度转换的实例代码
2019/08/08 Python
Python (Win)readline和tab补全的安装方法
2019/08/27 Python
对Keras中predict()方法和predict_classes()方法的区别说明
2020/06/09 Python
Python selenium爬取微信公众号文章代码详解
2020/08/12 Python
python从PDF中提取数据的示例
2020/10/30 Python
美国最大的家庭鞋类零售商之一:Shoe Carnival
2017/10/06 全球购物
Ibatis中如何提高SQL Map的性能
2013/05/11 面试题
护理专业本科生自荐信
2013/10/01 职场文书
体育教育毕业生自荐信
2013/11/21 职场文书
理货员的岗位职责
2013/11/23 职场文书
欠条范文
2015/07/03 职场文书
导游词之大雁塔景区
2019/09/17 职场文书
话题作文之生命的旋律
2019/12/17 职场文书
nginx部署多前端项目的几种方法
2021/05/25 Servers