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 相关文章推荐
IIS6.0+PHP5.x+MySQL5.x+Zend3.0x+GD+phpMyAdmin2.8x通用安装实例(已经完成)
Dec 06 PHP
ionCube 一款类似zend的PHP加密/解密工具
Jul 25 PHP
php学习之变量的使用
May 29 PHP
PHP笔记之:日期函数的使用介绍
Apr 24 PHP
解析php时间戳与日期的转换
Jun 06 PHP
php函数间的参数传递(值传递/引用传递)
Sep 23 PHP
PHP邮件发送类PHPMailer用法实例详解
Sep 22 PHP
php+mysql大量用户登录解决方案分析
Dec 29 PHP
PHP向socket服务器收发数据的方法
Jan 24 PHP
php+mysqli使用面向对象方式查询数据库实例
Jan 29 PHP
PHP应用跨时区功能的实现方法
Mar 21 PHP
PHP基于array_unique实现二维数组去重
Jul 14 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
MySql 按时间段查询数据方法(实例说明)
2008/11/02 PHP
php生成年月日下载列表的方法
2015/04/24 PHP
php格式文件打开的四种方法
2018/02/24 PHP
通过PHP的Wrapper无缝迁移原有项目到新服务的实现方法
2020/04/02 PHP
判断控件是否已加载完成的代码
2010/02/24 Javascript
同一页面多个商品倒计时JS 基于面向对象的javascript
2012/02/16 Javascript
js立即执行函数: (function ( ){})( ) 与 (function ( ){}( )) 有什么区别?
2015/11/18 Javascript
JQuery实现简单的图片滑动切换特效
2015/11/22 Javascript
利用jquery制作滚动到指定位置触发动画
2016/03/26 Javascript
AngularJs实现分页功能不带省略号的代码
2016/05/30 Javascript
js无法获取到html标签的属性的解决方法
2016/07/26 Javascript
jQuery Ajax Post 回调函数不执行问题的解决方法
2016/08/15 Javascript
require.js+vue开发微信上传图片组件
2016/10/27 Javascript
Three.js入门之hello world以及如何绘制线
2017/09/25 Javascript
Bootstrap Tooltip显示换行和左对齐的解决方案
2017/10/11 Javascript
大转盘抽奖小程序版 转盘抽奖网页版
2020/04/16 Javascript
解决qrcode.js生成二维码时必须定义一个空div的问题
2020/07/09 Javascript
详细分析JavaScript中的深浅拷贝
2020/09/17 Javascript
vue-amap根据地址回显地图并mark的操作
2020/11/03 Javascript
[02:27]2018DOTA2亚洲邀请赛赛前采访-OpTic
2018/04/03 DOTA
Python聊天室实例程序分享
2016/01/05 Python
Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)
2017/05/08 Python
tensorflow构建BP神经网络的方法
2018/03/12 Python
Python爬虫小技巧之伪造随机的User-Agent
2018/09/13 Python
python定时复制远程文件夹中所有文件
2019/04/30 Python
python中的函数递归和迭代原理解析
2019/11/14 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
2020/08/04 Python
Python常用GUI框架原理解析汇总
2020/12/07 Python
用HTML5.0制作网页的教程
2010/05/30 HTML / CSS
html5页面结构_动力节点Java学院整理
2017/07/10 HTML / CSS
领导班子自我剖析材料
2014/08/16 职场文书
城市轨道交通工程职业生涯规划书范文
2014/09/16 职场文书
2015年度高中教师工作总结
2015/05/26 职场文书
python编写五子棋游戏
2021/05/25 Python
Python实现制作销售数据可视化看板详解
2021/11/27 Python
MySQL生成千万测试数据以及遇到的问题
2022/08/05 MySQL