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日历[测试通过]
Mar 27 PHP
php 实现进制转换(二进制、八进制、十六进制)互相转换实现代码
Oct 22 PHP
php地址引用(php地址引用的效率问题)
Mar 23 PHP
thinkphp3查询mssql数据库乱码解决方法分享
Feb 11 PHP
php面向对象中static静态属性与方法的内存位置分析
Feb 08 PHP
php实现图片局部打马赛克的方法
Feb 11 PHP
PHP 验证登陆类分享
Mar 13 PHP
PHP中如何使用session实现保存用户登录信息
Oct 20 PHP
thinkPHP导出csv文件及用表格输出excel的方法
Dec 30 PHP
PHP用正则匹配form表单中所有元素的类型和属性值实例代码
Feb 28 PHP
PHP基于堆栈实现的高级计算器功能示例
Sep 15 PHP
Laravel框架查询构造器 CURD操作示例
Sep 04 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
十大催泪虐心动漫,你能坚持看到第几部?
2020/03/04 日漫
十天学会php之第七天
2006/10/09 PHP
获取php页面执行时间,数据库读写次数,函数调用次数等(THINKphp)
2013/06/03 PHP
PHP抓取网页、解析HTML常用的方法总结
2015/07/01 PHP
Laravel统计一段时间间隔的数据方法
2019/10/09 PHP
jQuery动态添加、删除元素的方法
2014/01/09 Javascript
JavaScript中switch判断容易犯错的一个细节
2014/08/27 Javascript
node.js+Ajax实现获取HTTP服务器返回数据
2014/11/26 Javascript
jQuery实现按钮的点击 全选/反选 单选框/复选框 文本框 表单验证
2015/06/25 Javascript
javascript实现二叉树的代码
2017/06/08 Javascript
webpack学习教程之publicPath路径问题详解
2017/06/17 Javascript
sublime text配置node.js调试(图文教程)
2017/11/23 Javascript
vue 实现全选全不选的示例代码
2018/03/29 Javascript
JS实现的汉字与Unicode码相互转化功能分析
2018/05/25 Javascript
微信小程序如何调用json数据接口并解析
2019/06/29 Javascript
vue+AI智能机器人回复功能实现
2020/07/16 Javascript
vue-amap根据地址回显地图并mark的操作
2020/11/03 Javascript
Python书单 不将就
2017/07/11 Python
Python实现PS滤镜特效Marble Filter玻璃条纹扭曲效果示例
2018/01/29 Python
Django实现分页显示效果
2019/10/31 Python
tensorflow mnist 数据加载实现并画图效果
2020/02/05 Python
Pyecharts地图显示不完成问题解决方案
2020/05/11 Python
Django celery异步任务实现代码示例
2020/11/26 Python
CSS3混合模式mix-blend-mode/background-blend-mode简介
2018/03/15 HTML / CSS
HTML5教程之html 5 本地数据库(Web Sql Database)
2014/04/03 HTML / CSS
Missguided美国官网:英国时尚品牌
2018/01/18 全球购物
Feelunique德国官方网站:欧洲最大的在线美容零售商
2019/07/20 全球购物
怎样自定义一个异常类
2016/09/27 面试题
final, finally, finalize的区别
2012/03/01 面试题
会计工作心得体会
2014/01/13 职场文书
人力资源专员岗位职责
2014/01/30 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
安全知识竞赛主持词
2015/06/30 职场文书
Redis安装启动及常见数据类型
2021/04/14 Redis
浅谈自定义校验注解ConstraintValidator
2021/06/30 Java/Android
python和C/C++混合编程之使用ctypes调用 C/C++的dll
2022/04/29 Python