php 局部变量 示例,PHP变量作用域实例详解

什么是变量作用域?

变量在使用是,要符合变量的定义规则。变量必须在有效的范围使用,如果变量超出了有限范围,变量也就没有意义了,就好像我们有一百块钱,我们可以购买一百块钱以内的东西,如果物品超出了一百块钱,那么这一百块也就不能用了。一百块钱就相当于这个变量,而一百块以内的范围就相当于作用域。

PHP的变量由于作用域不同,分为:局部变量,全局变量和静态变量,如下表:作用域说明

局部变量在函数的内部定义的变量,作用域就是所在的函数范围

全局变量在被定义所有的函数以外的变量,作用域是整个PHP文件,但是在用户自定义函数内部是不能使用的。如果希望用户在用户自定义函数内部使用全局变量,则使用global关键字声明全局变量

静态变量能够在函数调用结束后仍保留变量值,当再次回到其作用域,又可以继续使用原来的值。而一般变量是在函数调用后,其存储的数据值会被清除,所占用的内存空间也会被释放。使用静态变量时,先要用关键字static来声明变量,把关键字static放在要定义的变量之前

fd184907f99e52fb834fcd3537b6727d.gif在函数内部定义的变量,其作用域为所在的函数,如果在函数外赋值,将被认为是完全不同的另一个变量。在退出声明变量的函数时,该变量及相应的值就会被清除。

实例

本实例用于比较在函数内赋值的变量(局部变量)和在函数外赋值的变量(全局变量),实例代码如下:<?php

header("content-type:text/html;charset=utf-8");

$exam= "在函数外定义"; //声明全局变量

function add(){

$exam="在函数内定义"; //声明局部变量

echo "在函数内输出的内容是:".$exam."
"; //输出局部变量

}

add(); //调用函数

echo "在函数外输出的内容是:".$exam; //输出全局变量

?>

运行结果如下:

c7b0e3454b4e28280f44d2ee5ce82551.png

静态变量在很多地方都能用到。例如,在博客中使用静态变量记录浏览者的人数,每一次用户访问和离开时,都能够保留目前浏览者的人数。在聊天室中也可以使用静态变量来记录用户的聊天内容。

示例

在下面的实例使用静态变量和普通变量同事输出一个数据,查看一下两者的功能有什么不同,代码如下:<?php

function zdy0(){

static $message = 0; //初始化静态变量

$message+=1;

echo $message." ";

}

function zdy1(){

$message = 0; //初始化静态变量

$message+=1;

echo $message." ";

}

for ($i=0;$i<10;$i++) zdy0(); //输出1~10

echo "
";

for ($i=0;$i<10;$i++) zdy1(); //输出10个1

echo "
";

?>

代码运行结果:

61e6a396786b1946f04d181062af257e.png

实例详解:

自定义函数zdy()是输出从1~10共10个数字,而zdy1()函数则输出的是10个1.,因为自定义函数zdy()含有静态变量$message,而函数zdy1()中$message是一个普通变量。两个变量初始化都为0,在分别使用for循环调用两个函数,结果函数zdy()在被调用后保留了静态变量$message中的值。而静态变量的初始化只是在函数第一次调用是被执行,以后就不再对其初始化操作了。而函数zdy1()在被调用后,其变量$message失去原来的值,重新被初始化为0.

全局变量可以在程序中的任何地方访问,但是在用户自定义函数内部是不能使用的。如果希望用户在用户自定义函数内部使用全局变量,要使用global关键字声明全局变量

示例

下面在自定义函数中应用全局变量与不应用全局变量进行对比。本例中定义两个全局变量$zy和$zyy,在用户自定义函数lxt()中,希望在第5,7行调用他们,而程序输出的结果只有$zyy

的值“PHP中文网”,因为在第6行用global关键字声明了全局变量$zyy。而第5行不会有任何输出,其中的$zy和第二行的$zy没有任何关系,实例代码如下:<?php

header("content-type:text/html;charset=utf-8");

$zy="你好";

$zyy="PHP中文网";

function lxt(){

echo $zy."
"; //$zy 不能被调用,没有输出

global $zyy; //利用关键字global 在函数内部说明,不说明认为是私有变量

echo $zyy."
"; //调用$zyy

}

lxt();

?>

代码运行结果:

c0901aea88a26e2d3f3d5e00cabe7d33.png

这就是应用全局变量与不应用全局变量的区别,下一节,我们讲解“可变变量”

相关视频教程推荐:《php.cn独孤九贱(4)-php视频教程》变量的作用域

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值