Blogger Information
Blog 16
fans 0
comment 2
visits 13471
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
变量的作用域--2018年4月13日23点49分
Alan_繁华
Original
793 people have browsed it

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

运行实例 »

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


Correction status:Uncorrected

Teacher's comments:
Statement of this Website
The copyright of this blog article belongs to the blogger. Please specify the address when reprinting! If there is any infringement or violation of the law, please contact admin@php.cn Report processing!
All comments Speak rationally on civilized internet, please comply with News Comment Service Agreement
0 comments