[PHP基础]PHP中的全局变量与静态变量

全局变量

PHP全局变量无法直接用于自定义函数中,下面是一个错误的例子:

<?php
//声明两个全局变量
$a = 20;
$b = 30;

function demo() {
    $c = $a + $b;
}

//调用函数会报错,全局变量$a,$b无法直接用于函数中
demo();

如果需要使用全局变量,需要使用global或者$GLOBALS,如下所示:

<?php
//声明两个全局变量
$a = 20;
$b = 30;

function demo() {
    //在函数中使用全局变量
    global $a,$b;
    $c = $a + $b;
    echo $c;
}

//正常执行,结果为50
demo();

或者使用$GLOBALS也是可以的

<?php
//声明两个全局变量
$a = 20;
$b = 30;

function demo() {
    //在函数中使用全局变量global
    $c = $GLOBALS['a'] + $GLOBALS['b'];
    echo $c;
}

//正常执行,结果为50
demo();

静态变量

函数中的局部变量,如果不专门声明为static存储类别,默认都是动态分配内存,函数结束后自动释放。如果希望函数执行后,局部变量依然保存在内存中,应该使用静态变量static来进行声明,比如下面的例子:

<?php
function demo() {
    //使用static来声明一个静态变量
    static $a = 20;
    echo $a;
    $a++;
}

//第一次调用,输出结果20
demo();
//第二次调用,内存并未释放,输出结果为21
demo();
//第三次调用,内存依然未释放,输出结果为22
demo();

标签: 无

发表评论: