浅析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 相关文章推荐
NT IIS下用ODBC连接数据库
Oct 09 PHP
谈谈PHP的输入输出流
Feb 14 PHP
全世界最小的php网页木马一枚 附PHP木马的防范方法
Oct 09 PHP
ajax+php打造进度条 readyState各状态
Mar 20 PHP
深入分析使用mysql_fetch_object()以对象的形式返回查询结果
Jun 05 PHP
PHP把小数转成整数3种方法
Jun 30 PHP
php使用memcoder将视频转成mp4格式的方法
Mar 12 PHP
PHP输入输出流学习笔记
May 12 PHP
php简单实现文件或图片强制下载的方法
Dec 06 PHP
利用php的ob缓存机制实现页面静态化方法
Jul 09 PHP
tp框架(thinkPHP)实现三次登陆密码错误之后锁定账号功能示例
May 24 PHP
解决laravel查询构造器中的别名问题
Oct 17 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 Pear 安装及使用
2009/03/19 PHP
PHP在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
2011/08/03 PHP
如何设置mysql允许外网访问
2013/06/04 PHP
php缓存技术详细总结
2013/08/07 PHP
Laravel 默认邮箱登录改成用户名登录的实现方法
2019/08/12 PHP
各情景下元素宽高的获取实现代码
2011/09/13 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
javasctipt如何显示几分钟前、几天前等
2014/04/30 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
2014/06/20 Javascript
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
jQuery下拉美化搜索表单效果代码分享
2015/08/25 Javascript
JS更改select内option属性的方法
2015/10/14 Javascript
jquery实现横向图片轮播特效代码分享
2015/11/19 Javascript
js获取鼠标点击的对象,点击另一个按钮删除该对象的实现代码
2016/05/13 Javascript
jquery checkbox无法用attr()二次勾选问题的解决方法
2016/07/22 Javascript
Angularjs单选改为多选的开发过程及问题解析
2017/02/17 Javascript
Nodejs中使用phantom将html转为pdf或图片格式的方法
2017/09/18 NodeJs
jQuery 选择器用法基础入门示例
2020/01/04 jQuery
javascript的hashCode函数实现代码小结
2020/08/11 Javascript
使用js和canvas实现时钟效果
2020/09/08 Javascript
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
解决python写入mysql中datetime类型遇到的问题
2018/06/21 Python
python函数与方法的区别总结
2019/06/23 Python
linux下python中文乱码解决方案详解
2019/08/28 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
2020/05/26 Python
Python3通过chmod修改目录或文件权限的方法示例
2020/06/08 Python
微软日本官方网站:Microsoft日本
2017/11/26 全球购物
世界上最好的精品店:Shoptiques
2018/02/05 全球购物
Diamondback自行车:拥有你的冒险
2019/04/22 全球购物
踏青活动策划方案
2014/08/19 职场文书
股东授权委托书
2014/10/15 职场文书
2014年后勤工作总结范文
2014/12/16 职场文书
小学班主任工作经验交流材料
2015/11/02 职场文书
送给自己的励志语句:要安静的优秀,悄无声息的坚强
2019/11/26 职场文书
MySQL 全文检索的使用示例
2021/06/07 MySQL
vue二维数组循环嵌套方式 循环数组、循环嵌套数组
2022/04/24 Vue.js