浅析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 相关文章推荐
一个可查询所有表的“通用”查询分页类
Oct 09 PHP
php 中文和编码判断代码
May 16 PHP
php socket实现的聊天室代码分享
Aug 16 PHP
php隐藏实际地址的文件下载方法
Apr 18 PHP
PHP目录与文件操作技巧总结(创建,删除,遍历,读写,修改等)
Sep 11 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
Oct 18 PHP
PHP-CGI远程代码执行漏洞分析与防范
May 07 PHP
关于 Laravel Redis 多个进程同时取队列问题详解
Dec 25 PHP
PHP设计模式之注册树模式分析
Jan 26 PHP
PHP 使用二进制保存用户状态的实例
Jan 29 PHP
thinkphp5 migrate数据库迁移工具
Feb 20 PHP
解决laravel session失效的问题
Oct 14 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
建立动态的WML站点(一)
2006/10/09 PHP
php 代码优化之经典示例
2011/03/24 PHP
php 修改、增加xml结点属性的实现代码
2013/10/22 PHP
javascript的事件描述
2006/09/08 Javascript
javascript 冒号 使用说明
2009/06/06 Javascript
javascript 多种搜索引擎集成的页面实现代码
2010/01/02 Javascript
IE6、IE7中获取Button元素的值的bug说明
2011/08/28 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
jQuery中hide()方法用法实例
2014/12/24 Javascript
js文本框走动跑马灯效果代码分享
2015/08/25 Javascript
高性能JavaScript循环语句和条件语句
2016/01/20 Javascript
js实现开启密码大写提示
2016/12/21 Javascript
self.attachevent is not a function的解决方法
2017/04/04 Javascript
纯js代码生成可搜索选择下拉列表的实例
2018/01/11 Javascript
基于Vue+elementUI实现动态表单的校验功能(根据条件动态切换校验格式)
2019/04/04 Javascript
JavaScript箭头函数中的this详解
2019/06/19 Javascript
vue自定义组件(通过Vue.use()来使用)即install的用法说明
2020/08/11 Javascript
[58:11]守擂赛第二周擂主赛 DeMonsTer vs Leopard
2020/04/28 DOTA
Python实现高效求解素数代码实例
2015/06/30 Python
深入理解Python变量与常量
2016/06/02 Python
Python使用getpass库读取密码的示例
2017/10/10 Python
Python中矩阵创建和矩阵运算方法
2018/08/04 Python
对python多线程中互斥锁Threading.Lock的简单应用详解
2019/01/11 Python
python实现维吉尼亚加密法
2019/03/20 Python
pytorch 在sequential中使用view来reshape的例子
2019/08/20 Python
pytorch之inception_v3的实现案例
2020/01/06 Python
Python日志syslog使用原理详解
2020/02/18 Python
Speedo澳大利亚官网:全球领先游泳品牌
2018/02/04 全球购物
纽约市的奢华内衣目的地:Anya Lust
2019/08/02 全球购物
土木工程应届生求职信
2013/10/31 职场文书
银行出纳岗位职责
2013/11/25 职场文书
社会学专业求职信
2014/02/24 职场文书
会计专业导师推荐信
2014/03/08 职场文书
乌镇导游词
2015/02/02 职场文书
纯CSS3实现div按照顺序出入效果
2021/07/15 HTML / CSS
win10怎么设置右下角图标不折叠?Win10设置右下角图标不折叠的方法
2022/07/15 数码科技