php变量的作用域详解

说明:在php中变量分为三种访问的方式(作用范围),局部变量,全局变量,静态变量。

①全局变量

在函数外定义的变量称为全局变量,全局作用域。正常情况只有在函数外使用。

$name = "qingyu"; //全局变量
function user()
{
    
    
    echo $name; //无法使用该全局变量,程序报错!
}
user();

注:不能在函数内使用的原因是变量和函数在内存中存储的位置不一样。

②局部变量

在函数内定义的变量称为局部变量,正常情况下只能在函数内部使用。

$name1 = "qingyu"; //全局变量
echo $name1;    //输出qingyu
function user()
{
    
    
   $name2 = "zhiyu"; //局部变量
   echo $name2;
}

user(); //输出zhiyu
echo $name2; //程序报错!全局环境不能使用这个局部变量!
③静态变量

正常情况下,我们的变量是在运行完当前的页面后销毁的。(PHP自己的特性)。如果不想销毁变量可以使用静态变量。

$age = 18; //全局变量
$age++;
echo $age;  //运行结果输出19;
function setAge()
{
    
    
    $age =18;
    echo $age;
    $age++; //  无效,无法让$age自增,
}


setAge(); //调用完,内存销毁$age ,所以每次调用都是重新赋值18
setAge();
setAge();
setAge();
setAge();
//输出5次 18

以下使用静态变量

function setAge()
{
    
    
    static $age =18; //静态变量的申明方式,$age是静态变量
    echo $age;
    $age++;
}
setAge(); //18
setAge(); //19
setAge(); //20
setAge(); //21
setAge(); //22

注:静态变量申明后运行完当前页面不在销毁这个变量,而是在内存中保留。一般在内存的静态区保存。

static $age =18;
$age ++;
echo $age; //19
echo $age; //19
echo $age; //19
echo $age; //19
echo $age; //19

注意:静态变量在全局环境不起作用。

④全局转局部,局部转全局

说明:局部变量可以在函数内申明为全局变量,这个时候就可以在函数外使用。

申明方式:

$GLOBALS 和globals

$sex ="男";
function setAge()
{
    
    
    global $sex;  //全局转局部
    global $age;  //局部转全局
    $age = 'qingyu';
    echo $sex;
}
setAge();
echo $age;

http://moban.shenhuangji.com/post/19.html

猜你喜欢

转载自blog.csdn.net/daimatong/article/details/105951136