浅析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里面的抽象类
Jan 28 PHP
在PHP中操作Excel实例代码
Apr 29 PHP
php数组函数序列之end() - 移动数组内部指针到最后一个元素,并返回该元素的值
Oct 31 PHP
PHP 多维数组的排序问题 根据二维数组中某个项排序
Nov 09 PHP
PHP判断文件是否存在、是否可读、目录是否存在的代码
Oct 03 PHP
php实现mysql事务处理的方法
Dec 25 PHP
通过php修改xml文档内容的方法
Jan 23 PHP
php利用smtp类实现电子邮件发送
Oct 30 PHP
PHP扩展框架之Yaf框架的安装与使用
May 18 PHP
PHP获取用户客户端真实IP的解决方案
Oct 10 PHP
php利用ob_start()清除输出和选择性输出的方法
Jan 18 PHP
设定php简写功能的方法
Nov 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中文件上传的安全问题
2006/10/09 PHP
php教程之phpize使用方法
2014/02/12 PHP
YiiFramework入门知识点总结(图文教程)
2015/12/28 PHP
PHP socket 模拟POST 请求实例代码
2016/07/18 PHP
centos 7.2下搭建LNMP环境教程
2016/11/20 PHP
PHP实现二维数组(或多维数组)转换成一维数组的常见方法总结
2019/12/04 PHP
分享几种好用的PHP自定义加密函数(可逆/不可逆)
2020/09/15 PHP
php中数组最简单的使用方法
2020/12/27 PHP
javascript 表格排序和表头浮动效果(扩展SortTable)
2009/04/07 Javascript
javascript操作字符串的原生方法
2014/12/22 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
javascript实现英文首字母大写
2015/04/23 Javascript
一张Web前端的思维导图分享
2015/07/03 Javascript
JavaScript function函数种类详解
2016/02/22 Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
2016/11/16 Javascript
jQuery设置Easyui校验规则(推荐)
2016/11/21 Javascript
JS+CSS实现滚动数字时钟效果
2017/12/25 Javascript
[03:34]2014DOTA2西雅图国际邀请赛 淘汰赛7月15日TOPPLAY
2014/07/15 DOTA
[04:09]2018年度DOTA2社区贡献奖-完美盛典
2018/12/16 DOTA
python基础教程之popen函数操作其它程序的输入和输出示例
2014/02/10 Python
Python实现的一个自动售饮料程序代码分享
2014/08/25 Python
打包python 加icon 去掉cmd黑窗口方法
2019/06/24 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
python使用opencv resize图像不进行插值的操作
2020/07/05 Python
css3一款3D字体带阴影效果的实现步骤
2013/03/20 HTML / CSS
HTML5中视频音频的使用详解
2017/07/07 HTML / CSS
介绍一下游标
2012/01/10 面试题
存储过程和函数的区别
2013/05/28 面试题
英语系本科生个人求职信
2013/09/21 职场文书
舞蹈教育学专业推荐信
2013/11/27 职场文书
2013年研究生毕业感言
2014/02/06 职场文书
《绿色蝈蝈》教学反思
2014/03/02 职场文书
投资意向协议书
2015/01/29 职场文书
关爱空巢老人感想
2015/08/11 职场文书
教师旷工检讨书
2015/08/15 职场文书
Python Django 后台管理之后台模型属性详解
2021/04/25 Python