PHP中全局变量和局部变量详解

PHP 专栏收录该内容
43 篇文章 0 订阅

直接用例子说话:
例一:

function fun1(){
    $a=100;
    echo $a;
}
function fun2(){
    $b=200;
    echo $b;
}
fun1();  //输出的结果为100
fun2();  //输出的结果为200

例二:

function fun1(){
    $a=100;
}
function fun2(){
    $b=200;
}
fun1();
fun2(); 
echo $a;
echo $b;//输出的结果是得不到任何的值

对例一和例二进行比较可知:
  调用函数的时候将变量$a,$b的值存入到内存中,调用结束后将变量$a,$b的值从内存中释放掉。
  在函数内声明的变量只能在函数中使用。//局部变量


$a=100;
function fun1(){
    echo $a;
}
function fun2(){
    echo $a;
}
fun1();
fun2();//得不到任何的值。

  系统不能区分开$a有什么不同。函数外部声明了$a,在函数内部的$a看做是新声明的变量,所以无法输出。要区分开的话需要加一个关键字global。

$a=100;
function fun1(){
    global $a;
    echo $a;
}
function fun2(){
    global $a;
    echo $a;
}
fun1();//得到的值为100
fun2();//得到的值为100。全局变量
$a=100;
$b=300;
function fun1(){
    echo $GLOBALS["a"];//得到的结果为100
    echo $GLOBALS["b"];//得到的值为300
}
function fun2()
{
    global $a;
    global $b;
    echo $a;
}
fun1();
fun2();

$a=100;
$b=300;
function fun1(){
    global $a;
    $a=999;
}
function fun2()
{
    global $b;
    $b=111;
}
fun1();
fun2();
echo $a."<br>";//得到999
echo $b."<br>";//得到111
$a=100;
$b=300;
function fun1($a){
    global $a;
    $a=999;
}
function fun2($b){
    global $b;
    $b=111;
}
fun1($a);//得不到任何值
fun2($b);//得不到任何值
echo $a."<br>";//得到999
echo $b."<br>";//得到111

$a=100;
function fun1($a)//传值:将全局变量值$a=100传递给函数fun1
{
    $a=999;     //$a的值变为999
}
fun1($a);//编译函数并释放掉内存中的$a=999
echo $a."<br>";//得到全局变量的值100.


$a=100;
function fun1(&$a)//&代表传地址
{
    $a=999;    
}
fun1($a);
echo$a."<br>";//得到结果为999

function test(){
    $a=0;
    echo $a."<br>";
    $a++;
}
test();//得到值为0
test();//得到值为0
test();//0
原因:在调用后内存被释放。声明输出释放三步。


function test(){
    static $a=0;//静态变量。在所有调用该函数内共享,紧在第一次调用的时候被初始化,后边调用不在执行初始化这一步。
    echo $a."<br>";
    $a++;
}
test();//可以任意的改变大小写,在php里函数是不区分大小写的,变量区分
function_exists("test");//判断函数是否存在

转自:http://blog.sina.com.cn/s/blog_6f145be10100ux6e.html

  • 2
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值