浅析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 相关文章推荐
PHP4实际应用经验篇(8)
Oct 09 PHP
一个php导出oracle库的php代码
Apr 20 PHP
DedeCMS 核心类TypeLink.class.php摘要笔记
Apr 07 PHP
Php Image Resize图片大小调整的函数代码
Jan 17 PHP
php获取文件夹路径内的图片以及分页显示示例
Mar 11 PHP
ThinkPHP多表联合查询的常用方法
Mar 24 PHP
php一个解析字符串排列数组的方法
May 12 PHP
php基于curl主动推送最新内容给百度收录的方法
Oct 14 PHP
php使用正则表达式去掉html中的注释方法
Nov 03 PHP
php 如何禁用eval() 函数实例详解
Dec 01 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
Jan 22 PHP
浅谈PHP中的那些魔术常量
Dec 02 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
操作Oracle的php类
2006/10/09 PHP
PHP5中Cookie与 Session使用详解
2013/04/30 PHP
PHP使用DES进行加密与解密的方法详解
2013/06/06 PHP
php读取mysql的简单实例
2014/01/15 PHP
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
让 JavaScript 轻松支持函数重载 (Part 2 - 实现)
2009/08/04 Javascript
jQuery 解析xml文件
2009/08/09 Javascript
在IE浏览器中resize事件执行多次的解决方法
2011/07/12 Javascript
JavaScript面向对象(极简主义法minimalist approach)
2012/07/17 Javascript
jQuery获取当前对象标签名称的方法
2014/02/07 Javascript
详解JavaScript正则表达式中的global属性的使用
2015/06/16 Javascript
JS+CSS实现精美的二级导航效果代码
2015/09/17 Javascript
javascript自动恢复文本框点击清除后的默认文本
2016/01/12 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
2016/05/17 Javascript
浅谈js的url解析函数封装
2016/06/28 Javascript
浅谈JSON.stringify()和JOSN.parse()方法的不同
2016/08/29 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
vue引入jq插件的实例讲解
2017/09/12 Javascript
Vue.js 动态为img的src赋值方法
2018/03/14 Javascript
vue中axios的封装问题(简易版拦截,get,post)
2018/06/15 Javascript
vue上传图片到oss的方法示例(图片带有删除功能)
2018/09/27 Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
2020/04/04 jQuery
JS实现简单移动端鼠标拖拽
2020/07/23 Javascript
用python + hadoop streaming 分布式编程(一) -- 原理介绍,样例程序与本地调试
2014/07/14 Python
Python实现拼接多张图片的方法
2014/12/01 Python
python在windows下实现ping操作并接收返回信息的方法
2015/03/20 Python
Python正则获取、过滤或者替换HTML标签的方法
2016/01/28 Python
Python探索之Metaclass初步了解
2017/10/28 Python
Python基于多线程操作数据库相关问题分析
2018/07/11 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
python 三种方法实现对Excel表格的读写
2020/11/19 Python
奥地利体育网上商店:Gigasport
2019/10/09 全球购物
QA工程师岗位职责
2013/11/20 职场文书
大学新生军训自我鉴定范文
2014/09/13 职场文书
python执行js代码的方法
2021/05/13 Python
【海涛教你打DOTA】虚空假面第一视角骨弓3房29杀
2022/04/01 DOTA