变量的作用域:脚本中变量可被引用/使用的范
1、全局作用域:函数之外创建的:全局变量可以被脚本的任何位置访问,但在函数内部访问全局变量要使用global关键字
2、局部作用域:函数内创建的
3、静态作用域:函数内创建的仅在函数中使用,仅被赋值一次:当一个函数调用完后,它的所有变量都会被删除,如果想要某个局部变量不被删除,那么可以使用static关键字
实例
<?php echo '<h3>全局作用域和局部作用域</h3>'; echo '<hr>'; $siteName = 'PHP中文网'; $globalVar = '<span style="color: red">这是$GLOBALS调用全局变量;</span>'; //$GLOBALS['siteName'] 等同于 $siteName 的内容,但$GLOBALS['siteName']可在函数内直接使用,不需要global $siteName function test(){ $test = '这是局部变量'; // echo $siteName; 在函数内部访问全局变量,要使用global关键字 global $siteName; echo "使用\$GLOBALS['globalVar']调用全局变量:".$GLOBALS['globalVar'].'<br>'; echo '这是在函数内部调用全局变量:'.$siteName; echo "<br>"; echo '这是在函数内声明的变量:'.$test; echo "<br>"; } test(); echo '<h3>静态作用域</h3>'; echo '<hr>'; function staticFun(){ $i = 1; return $i; $i++; } echo '第一次调用:'.staticFun().'<br>'; echo '第二次调用:'.staticFun().'<br>'; echo '第三次调用:'.staticFun().'<br>'; //staticFun()中的返回值没有发生任何变化,也就是说每次都被赋值一次,使用完后变量被删除,如果要解决这个问题,我们需要使用static关键字 function staticFun2(){ static $j = 0; $j++; return $j; } echo '第一次调用:'.staticFun2().'<br>'; echo '第二次调用:'.staticFun2().'<br>'; echo '第三次调用:'.staticFun2().'<br>'; //通过输出结果可以看出,staticFun2()函数每次被调用后,$j的值没有被删除,而是被保留了下来,下次调用时直接使用了之前的值 echo '<h3>超级全局变量:是系统预定义的,用户无需声明即可使用</h3>'; echo '<hr>'; echo '超全局变量有很多,比如:$GLOBALS,$_SERVER,$_GET,$_POST,$_FILES,$_COOKIE,$_SESSION,$_REQUEST$_ENV等等'.'<br>'; echo '当前执行脚本的文件名:'.$_SERVER['PHP_SELF'].'<br>'; echo '当前请求头中 User-Agent:'.$_SERVER['HTTP_USER_AGENT'].'<br>'; echo '当前运行脚本所在的服务器的主机名:'.$_SERVER['SERVER_NAME'].'<br>'; echo '当前运行脚本所在的文档根目录:'.$_SERVER['DOCUMENT_ROOT'].'<br>'; echo '访问页面使用的请求方法:'.$_SERVER['REQUEST_METHOD'].'<br>';
运行实例 »
点击 "运行实例" 按钮查看在线实例