php学习之 认清变量的作用范围


Posted in PHP onJanuary 26, 2010

任务2:认清变量的作用范围

⚑局部变量与全局变量

变量的存在有着它的生命周期,我们可以让它存在于一个小的函数内部,也可让它存在于整个程序当中。对于一般情况下声明的变量,我们称之为局部变量,只能在当前程序段中存在,而使用$globals声明出来的变量则是在当前页面整个程序当中都会有效。

例:

<?php 
$a=1; 
$b=2; 
function sum() 
{$a; 
$b; 
$b=$a+$b; 
} 
sum(); 
echo$b; 
?>

在这段程序当中,
第2至3行,我们建立了两个变量a和b并分别给其赋值为1和2。
第3行至第7行,我们定义了一个自加的函数sum(),其作用是让sum内部的变量a和b进行相加,并将加得的值赋给b。
第8行,调用sum函数。
第9行,用echo将b的值输出。
可能有人会认为此时在网页上输出的值一定是3,但是运行后你会发现,值还是为2,也就是b原先的值。这就是局部变量的原因造成的,在第2至3行当中声明的变量无法在sum()函数中使用,也就是说,sum函数中使用的a和b和第2至3行中a和b只是名字相同,但两者之间毫无关系。所以,在最终输出的b也就是第3行b的值了。

但如果,我们将程序修改下面的样式:

<?php 
$a=1; 
$b=2; 
function sum() 
{ 
global $a,$b; 
$b=$a+$b; 
} 
sum(); 
echo $b; 
?>

我们发现,在sum函数中,我们给变量a和b加上了一个global修饰符,这个时候,a和b就和函数外的a和b建立上了关系,它们就是同一个变量了。因此,这个程序在运行的时候,其结果就为3了。因此,我们在声明全局变量时,只需在局部使用它们时(本例中是在函数sum中),给它们加上一个修饰符global,它们就可以继承外部的值,也就不再是局部变量了。
PHP 相关文章推荐
php 文件上传后缀名与文件类型对照表(几乎涵盖所有文件)
May 16 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
Aug 21 PHP
php 模拟 asp.net webFrom 按钮提交事件的思路及代码
Dec 02 PHP
php+mysql不用递归实现的无限级分类实例(非递归)
Jul 08 PHP
PHP 正则表达式小结
Feb 12 PHP
php类的扩展和继承用法实例
Jun 20 PHP
PHP制作用户注册系统
Oct 23 PHP
PHP操作FTP类 (上传、下载、移动、创建等)
Mar 31 PHP
php数组函数array_walk用法示例
May 26 PHP
PHP截取发动短信内容的方法
Jul 04 PHP
ThinkPHP3.2框架自带分页功能实现方法示例
May 13 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
Nov 21 PHP
PHP 变量的定义方法
Jan 26 #PHP
php cout&amp;lt;&amp;lt;的一点看法
Jan 24 #PHP
php addslashes和mysql_real_escape_string
Jan 24 #PHP
PHPMailer 中文使用说明小结
Jan 22 #PHP
关于php fread()使用技巧
Jan 22 #PHP
PHP 时间转换Unix时间戳代码
Jan 22 #PHP
PHP 实用代码收集
Jan 22 #PHP
You might like
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
PHP session 会话处理函数
2016/06/06 PHP
yii2 数据库读写分离配置示例
2017/02/10 PHP
模仿JQuery sortable效果 代码有错但值得看看
2009/11/05 Javascript
jQuery jqgrid 对含特殊字符json 数据的 Java 处理方法
2011/01/01 Javascript
给事件响应函数传参数的四种方式小结
2013/12/05 Javascript
js监控IE火狐浏览器关闭、刷新、回退、前进事件
2014/07/23 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
JS去除iframe滚动条的方法
2015/04/01 Javascript
分享两段简单的JS代码防止SQL注入
2016/04/12 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
2016/08/19 Javascript
require.js 加载 vue组件 r.js 合并压缩的实例
2016/10/14 Javascript
AngularJS创建自定义指令的方法详解
2016/11/03 Javascript
原生js编写2048小游戏
2017/03/17 Javascript
vue实现2048小游戏功能思路详解
2018/05/09 Javascript
vue使用自定义icon图标的方法
2018/05/14 Javascript
深入理解Node内建模块和对象
2019/03/12 Javascript
Vue 解决父组件跳转子路由后当前导航active样式消失问题
2020/07/21 Javascript
通过数据库对Django进行删除字段和删除模型的操作
2015/07/21 Python
Python二叉树的定义及常用遍历算法分析
2017/11/24 Python
深度辨析Python的eval()与exec()的方法
2019/03/26 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
2020/06/02 Python
如何基于Python和Flask编写Prometheus监控
2020/11/25 Python
CSS3 圆角效果
2009/07/15 HTML / CSS
HTML5 Canvas概述
2009/08/26 HTML / CSS
简历里的自我评价
2014/01/31 职场文书
《三峡》教学反思
2014/03/01 职场文书
房地产项目建议书
2014/03/12 职场文书
实习报告评语
2014/04/26 职场文书
房产公证委托书范本
2014/09/20 职场文书
干部培训简讯
2015/07/20 职场文书
使用numpy nonzero 找出非0元素
2021/05/14 Python
《吸血鬼:避世 血猎》官宣4.27发售 系列首款大逃杀
2022/04/03 其他游戏
CentOS7设置ssh服务以及端口修改方式
2022/12/24 Servers