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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值