博客列表 >变量的作用域--2018年4月13日23点49分

变量的作用域--2018年4月13日23点49分

Alan_繁华
Alan_繁华原创
2018年04月13日 23:50:51790浏览

变量的作用域:脚本中变量可被引用/使用的范
   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>';

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议