zoukankan      html  css  js  c++  java
  • php学习笔记4--php中的变量作用域


    变量作用域:可以简单地理解为变量的可见区域,变量能被访问的范围。
    如同其他语言,php中也有全局作用域和局部作用域之分,但是不同的是:
    php中的全局作用域指的是:只能在函数外部使用,而局部作用域指的是:
    只能在函数内部使用。
    php中的全局变量指的是:在函数外部定义,一般来说只能在函数外部被访问,
    不能直接在函数内部可见的变量;
    而局部变量指的是:在函数内部定义,只能在函数内部访问的变量。
    $name = "csc";
    function test(){
    echo $name; //运行该脚本则会提示:Undefined variable: name未定义的变量name.
    }
    test();
    由上可知,在函数内部不能直接访问函数外部定义的变量。当然也只是不能直接访问,肯定有间接访问的办法:
    php提供了一个global关键字,在函数内部用global声明函数外部的全局变量之后,便可在函数内部访问全局变量了:
    $name = "csc";
    function test(){
    global $name;//在函数中用global声明了全局变量$name之后,对该变量的所有引用都会指向其全局版本。
    echo $name; //正常输出$name的值'csc'
    }
    test();
    若是出现同名的全局变量与局部变量呢?
    $name = "csc";
    function test($name){
    echo $name,'<br/>'; //当前只有局部变量$name可见,输出'dqr';
    global $name; //声明现在开始$name是全局变量的$name,而非局部变量$name了
    echo $name,'<br/>'; //当前$name指向的是全局版本的$name,输出'csc'
    $name = 'dqrcsc'; //修改的是全局变量版本的$name
    }
    test('dqr');
    echo $name; //在test()内部被修改,输出'dqrcsc'

    php中实际上还存在另一种作用域:超全局作用域,只看名字就知道比全局作用域NB了。
    超全局作用域:在函数内外都可见,一般用于php系统预定义的变量。如:$GLOBALS,$_GET,$_COOKIE等等都是所谓的
    超全局变量。也称为自动化的全局变量。这就表示其在脚本的所有作用域中都是可用的。
    不需要在函数或方法中用 global $variable; 来访问它。
    这是就出现了另一种在函数内部访问全局变量的方法:
    $name = "csc";
    function test(){
    echo $GLOBALS['name']; //正常输出$name的值'csc'
    }
    test();
    当然,实质上访问的是超全局变量$GLOBALS,并不是直接访问全局变量$name。
    此时,若是出现同名的全局变量与局部变量呢?
    $name = "csc";
    function test($name){
    echo $name,'<br/>'; //当前只有局部变量$name可见,输出'dqr';
    echo $GLOBALS['name']; //访问的是全局变量$name,而非局部变量,输出'csc'
    }
    test('dqr');

  • 相关阅读:
    HDU 1104 Remainder (POJ 2426 BFS+数论)
    POJ 1398 Complete the sequence! ★ (差分)
    POJ 2917 Diophantus of Alexandria ★(数论)
    POJ 1948 Triangular Pastures (二维01背包)
    POJ 1948 Triangular Pastures (二维01背包)
    starter kits 介绍
    starter kits 介绍
    信息分析与预测复习题(绪论)
    信息分析与预测复习题(绪论)
    starter kits 介绍
  • 原文地址:https://www.cnblogs.com/dqrcsc/p/4390967.html
Copyright © 2011-2022 走看看