浅析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 相关文章推荐
模拟OICQ的实现思路和核心程序(二)
Oct 09 PHP
PHP strtr() 函数使用说明
Nov 21 PHP
php文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
Jun 13 PHP
Zend的MVC机制使用分析(一)
May 02 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
Jun 28 PHP
遭遇php的in_array低性能问题
Sep 17 PHP
PHP基于Closure类创建匿名函数的方法详解
Aug 17 PHP
php 获取xml接口数据的处理方法
May 31 PHP
PHP预定义超全局数组变量小结
Aug 20 PHP
Laravel 中创建 Zip 压缩文件并提供下载的实现方法
Apr 02 PHP
微信支付之JSAPI公众号支付详解
May 15 PHP
laravel 实现设置时区的简单方法
Oct 10 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实现批量下载百度云盘文件例子分享
2014/04/10 PHP
jQuery+PHP实现的掷色子抽奖游戏实例
2015/01/04 PHP
PHP获取数组长度或某个值出现次数的方法
2015/02/11 PHP
前端开发必须知道的JS之原型和继承
2010/07/06 Javascript
script标签的 charset 属性使用说明
2010/12/04 Javascript
提示$ is not defined错误分析及解决
2013/04/09 Javascript
FF IE浏览器修改标签透明度的方法
2014/01/27 Javascript
iframe子页面与父页面在同域或不同域下的js通信
2014/05/07 Javascript
Javascript 学习笔记之 对象篇(二) : 原型对象
2014/06/24 Javascript
JS动态插入并立即执行回调函数的方法
2016/04/21 Javascript
每个程序员都需要学习 JavaScript 的7个理由小结
2016/09/03 Javascript
原生js实现ajax方法(超简单)
2016/09/20 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
2016/12/08 Javascript
详解easyui基于 layui.laydate日期扩展组件
2018/07/18 Javascript
微信小程序如何获取用户收货地址
2018/11/27 Javascript
使用 JavaScript 创建并下载文件(模拟点击)
2019/10/25 Javascript
vue实现移动端触屏拖拽功能
2020/08/21 Javascript
关于numpy数组轴的使用详解
2019/12/05 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
浅谈Keras中shuffle和validation_split的顺序
2020/06/19 Python
实例讲解使用HTML5 Canvas绘制阴影效果的方法
2016/03/25 HTML / CSS
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
canvas实现图片镜像翻转的2种方式
2020/07/22 HTML / CSS
爱尔兰领先的在线体育用品零售商:theGAAstore
2018/04/16 全球购物
定制别致的瑜伽垫:Sugarmat
2019/06/21 全球购物
教学大赛获奖感言
2014/01/15 职场文书
规划编制实施方案
2014/03/15 职场文书
通信工程专业求职信
2014/06/04 职场文书
单位作风建设剖析材料
2014/10/11 职场文书
2014年仓库保管员工作总结
2014/12/03 职场文书
三好学生评选事迹材料(2016精选版)
2016/02/25 职场文书
如何书写先进事迹材料?
2019/07/02 职场文书
Python内置数据结构列表与元组示例详解
2021/08/04 Python
利用js实现简单开关灯代码
2021/11/23 Javascript
Redis 操作多个数据库的配置的方法实现
2022/03/23 Redis
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js