浅析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 19 PHP
11个PHPer必须要了解的编程规范
Sep 22 PHP
php格式输出文件var_export函数实例
Nov 15 PHP
php的crc32函数使用时需要注意的问题(不然就是坑)
Apr 21 PHP
php从文件夹随机读取文件的方法
Jun 01 PHP
PHP使用MPDF类生成PDF的方法
Dec 08 PHP
php ucwords() 函数将字符串中每个单词的首字符转换为大写(实现代码)
May 12 PHP
Yii安装与使用Excel扩展的方法
Jul 13 PHP
PHP将字符串首字母大小写转换的实例
Jan 21 PHP
PHP小程序支付功能完整版【基于thinkPHP】
Mar 26 PHP
PHP使用观察者模式处理异常信息的方法详解
Sep 24 PHP
ThinkPHP5 框架引入 Go AOP,PHP AOP编程项目详解
May 12 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实现递归复制整个文件夹的类实例
2015/08/03 PHP
Yii框架分页实现方法详解
2017/05/20 PHP
[原创]PHP获取数组表示的路径方法分析【数组转字符串】
2017/09/01 PHP
php解压缩zip和rar压缩包文件的方法
2019/07/10 PHP
[原创]来自ImageSee官方 JavaScript图片浏览器
2008/01/16 Javascript
javascript开发随笔二 动态加载js和文件
2011/11/25 Javascript
我的Node.js学习之路(四)--单元测试
2014/07/06 Javascript
微信企业号开发之微信考勤百度地图定位
2015/09/11 Javascript
jQuery模仿阿里云购买服务器选择购买时间长度的代码
2016/04/29 Javascript
BooStrap对导航条的改造实践小结
2016/09/21 Javascript
详解js界面跳转与值传递
2016/11/22 Javascript
JavaScript数组迭代方法
2017/03/03 Javascript
jQuery.parseJSON()函数详解
2019/02/28 jQuery
jquery中为什么能用$操作
2019/06/18 jQuery
JS运算符优先级与表达式示例详解
2020/09/04 Javascript
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
Python中第三方库Requests库的高级用法详解
2017/03/12 Python
Python编程求解二叉树中和为某一值的路径代码示例
2018/01/04 Python
python实现整数的二进制循环移位
2019/03/08 Python
Python OpenCV 调用摄像头并截图保存功能的实现代码
2019/07/02 Python
python中for循环变量作用域及用法详解
2019/11/05 Python
Django admin管理工具TabularInline类用法详解
2020/05/14 Python
基于python实现判断字符串是否数字算法
2020/07/10 Python
使用python求斐波那契数列中第n个数的值示例代码
2020/07/26 Python
python递归函数用法详解
2020/10/26 Python
Python列表元素删除和remove()方法详解
2021/01/04 Python
美国最大婚纱连锁店运营商:David’s Bridal
2019/03/12 全球购物
员工工作表扬信范文
2014/01/13 职场文书
《临死前的严监生》教学反思
2014/02/13 职场文书
老同学聚会感言
2014/02/23 职场文书
小学爱国卫生月活动总结
2014/06/30 职场文书
安全生产知识竞赛活动总结
2014/07/07 职场文书
小学感恩主题班会
2015/08/12 职场文书
请病假条范文
2015/08/17 职场文书
Python+Tkinter打造签名设计工具
2022/04/01 Python
详解如何使用Nginx解决跨域问题
2022/05/06 Servers