PHP变量范围详解

墨辰丷
发布: 2018-05-10 15:06:57
原创
2410人浏览过

变量范围即它定义的上下文背景(也就是它的生效范围)。在javascript中,并没有变量范围这一概念,相似的可能是作用域。但是,由于javscript使用的是词法作用域,指变量声明时的位置;而php并不存在变量声明,变量在第一次赋值时相当于声明了变量。所以,二者并不相同。本文将详细介绍php中的变量范围。

1、局部变量 
局部变量是在函数内声明的变量,其作用域仅限于函数内部。函数的参数也是局部变量,区别在于,函数参数值来自被调用时传入的值。执行完毕后函数内部的动态变量都将被释放。 

<?php
    function a($b){
        $c = 1;        echo "$b+$c = " . ($b+$c) . '<br />';
    }
    a(2);//输出3
    echo $b+$c;//函数外部的非法访问,报notice错误,并输出0
?>
登录后复制

2、全局变量 
在函数外定义的变量称为全局变量,作用域范围在定义变量开始到本程序文件的末尾。 
另外,在函数中无法直接调用全局变量,需要使用关键字global,也可以使用$GLOBALS来代替global。$GLOBALS 是一个超全局变量。

<?php
    //示例1
    $a = 1;    $b = 2;    function Sum(){
        global $a, $b;        $b = $a + $b;
    }
    Sum();    echo $b;//输出的结果是3

    //示例2
    $c = 1;    $d = 2;    function Sum()
    {
        $GLOBALS['d'] = $GLOBALS['c'] + $GLOBALS['d'];
    }
    Sum();    echo $d;//输出3
?>
登录后复制

3、静态变量 
静态变量仅在局部函数域中存在,但当程序执行离开此作用域时,其值并不丢失。静态变量用static来声明的,未被static声明的默认是动态变量。其在函数执行完之后,内部的静态变量已然保存在内存中。仅在脚本执行期间,第一次调用该函数时被初始化。 

<?php
    function test()
    {
        static $a = 0;        echo $a;        $a++;
    }
    test();//输出0
    test();//输出1
?>
登录后复制

静态变量也提供了一种处理递归函数的方法。递归函数是一种调用自己的函数。写递归函数时要小心,因为可能会无穷递归下去。必须确保有充分的方法来中止递归。以下这个简单的函数递归计数到 10,使用静态变量 $count 来判断何时停止

立即学习PHP免费学习笔记(深入)”;

<?php
    function test()
    {
        static $count = 0;        $count++;        echo $count;        if ($count < 10) {
            test();
        }        $count--;
    }
?>
登录后复制

相关推荐:

php变量范围

php变量范围,php全局变量与静态变量

php变量范围介绍_PHP教程

以上就是PHP变量范围详解的详细内容,更多请关注php中文网其它相关文章!

PHP速学教程(入门到精通)
PHP速学教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号