批改状态:未批改
老师批语:
变量的作用域:脚本中变量可被引用/使用的范
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>';点击 "运行实例" 按钮查看在线实例
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号