浅析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 相关文章推荐
mysql 搜索之简单应用
Apr 27 PHP
PHP 查找字符串常用函数介绍
Jun 07 PHP
关于PHP结束标签的使用细节探讨及联想
Mar 04 PHP
PHP实现变色验证码实例
Jan 06 PHP
php object转数组示例
Jan 15 PHP
php获取网页请求状态程序示例
Jun 17 PHP
Yii的CDbCriteria查询条件用法实例
Dec 04 PHP
PHP封装的字符串加密解密函数
Dec 18 PHP
PHP常用的三种设计模式汇总
Aug 28 PHP
php版微信自定义回复功能示例
Dec 05 PHP
php实现 master-worker 守护多进程模式的实例代码
Jul 20 PHP
PHP实现简单的计算器
Aug 28 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
PHP 和 MySQL 基础教程(三)
2006/10/09 PHP
PHP OPP机制和模式简介(抽象类、接口和契约式编程)
2014/06/09 PHP
php使用fgetcsv读取csv文件出现乱码的解决方法
2014/11/08 PHP
php压缩和解压缩字符串的方法
2015/03/14 PHP
php实现CSV文件导入和导出
2015/10/24 PHP
php生成txt文件实例代码介绍
2016/04/28 PHP
Yii2创建多界面主题(Theme)的方法
2016/10/08 PHP
jQuery如何实现点击页面获得当前点击元素的id或其他信息
2014/01/09 Javascript
Javascript单元测试框架QUnitjs详细介绍
2014/05/08 Javascript
JavaScript弹出新窗口并控制窗口移动到指定位置的方法
2015/04/06 Javascript
javascript中Math.random()使用详解
2015/04/15 Javascript
jQuery EasyUI 布局之动态添加tabs标签页
2015/11/18 Javascript
详解webpack异步加载业务模块
2017/06/23 Javascript
vue实现裁切图片同时实现放大、缩小、旋转功能
2018/03/02 Javascript
vue动态删除从数据库倒入列表的某一条方法
2018/09/29 Javascript
react高阶组件添加和删除props
2019/04/26 Javascript
详解微信小程序开发聊天室—实时聊天,支持图片预览
2019/05/20 Javascript
Layui table field初始化加载时进行隐藏的方法
2019/09/19 Javascript
Node.js API详解之 assert模块用法实例分析
2020/05/26 Javascript
在Python中处理字符串之isdecimal()方法的使用
2015/05/20 Python
深入理解 Python 中的多线程 新手必看
2016/11/20 Python
python中time库的实例使用方法
2019/10/31 Python
Django框架HttpRequest对象用法实例分析
2019/11/01 Python
numpy矩阵数值太多不能全部显示的解决
2020/05/14 Python
CSS3中线性颜色渐变的一些实现方法
2015/07/14 HTML / CSS
HTML5 文件上传下载的实例代码
2017/07/03 HTML / CSS
新英格兰最大的特色礼品连锁店:The Paper Store
2018/07/23 全球购物
新西兰网上购物,折扣店:BestDeals.co.nz
2019/03/20 全球购物
英国电气世界:Electrical World
2019/09/08 全球购物
Emma Bridgewater官网:英国餐具制造商
2019/11/24 全球购物
生产车间实习自我鉴定
2013/09/23 职场文书
四年级数学教学反思
2014/02/02 职场文书
标会主持词应该怎么写?
2019/08/15 职场文书
使用HTML+Css+transform实现3D导航栏的示例代码
2021/03/31 HTML / CSS
Python 处理表格进行成绩排序的操作代码
2021/07/26 Python
Mysql排查分析慢sql之explain实战案例
2022/04/19 MySQL