• php-函数体,作用域,静态变量



    1、函数体

    • 函数内部(大括号里面)的所有的代码叫函数体

    • 函数返回值

      • return,指的是将函数实现的结果,通过return关键字,返回给函数外部(函数调用的地方)

      • 在php中所有的函数都有返回值,

      • 1 <?php
        2     function display(){
        3         echo _FUNCTION_;   //输出当前函数名字
        4     }
        5     var_dump(display());
        6 ?>
        7 //结果:
        8 displayNULL
      • 返回值的作用:将计算结果返回给调用处

      • return:返回结果,并代表函数结束

     

    2、作用域

    1、全局变量

    • 用户普通定义的变量

    • 在全局范围内定义的

    • 函数内部不可访问

    • 脚本周期:知道脚本运行结束

    2、局部变量

    • 在函数内部定义的变量

    • 在当前函数内部使用

    • 函数周期:函数执行结束

    3、超全局变量

    • 系统定义的变量

    • $_SERVER

    • $_POST

    • 所属超全局空间,函数内外都可以访问

    • 局部访问全局:

       1 <?php
       2     $global='global area';
       3 //最终会被系统纳入到超全局变量中:$GLOBALS['global']
       4 =global area;
       5     function yb(){
       6         echo $GLOBALS['global'];
       7     }
       8     yb();
       9 ?>
      10 
      11 //结果:
      12 global area

    4、全局访问局部,局部访问全局:

    Global关键字:是一种在函縠里面定义变量的一种方式

    1、如果使用global定义的变量名在外部存在(全局变量),那么系统在函数内部定义的变量直接指向外部全局变量所指问的内存空间(同一个变量)

    2、如果使用global定义的变量名在外部不存在(全局变量),系统会自动在全局空间(外部)定义一个与局部变量同名的全局变量

    3、基本语法:

     1 global 变量名;  //不能赋值
     2 变量名=值;
     3 
     4 示例:
     5 <?php
     6     $global='global area';
     7     function yb(){
     8         global $global;     //全局空间已存在该变量
     9         echo $global;
    10         
    11         global $local;     //全局空间不存在该变量
    12         $local='hello';
    13     }
    14     yb();
    15     echo '<br/>',$local;    //访问局部变量
    16 ?>
    17 
    18 //结果:
    19 global area
    20 hello

     

     

    3、静态变量

    static,是在函数内部定义的变量,使用static关键字修饰,用来实现跨函数共享数据的变量:在函数运行结束所有的局部变量都会清空,如果重新运行一下函数,所有的局部变量又会重新初始化

    基本语法:

    1 function 函数名(){
    2     //定义变量
    3     static 变量名=值;
    4 }

    作用:跨函数共享数据(同一个函数被多次调用时)

    使用:

    • 统计:当前函数调用的次数

    • 统筹函数多次调用得到的不同结果(递归思想)

    示例:

     1 <?php
     2     function display(){
     3         $a=1;
     4         static $b=1;
     5         echo $a++,$b++;
     6     }
     7     display();
     8     display();
     9     display();
    10 ?>
    11 
    12 //结果:
    13 11
    14 12
    15 13

     

  • 相关阅读:
    理解构造器
    if与switch的性能比较
    Java对象的内存(一)
    shell编程_条件判断if
    shell编程_基础&变量
    集群架构篇:Nginx架构演进<拆分数据库 多台web节点共享静态资源>
    集群架构篇:Nginx流行架构LNMP
    集群架构篇:Nginx常用模块
    LInux系统@安装CentOS7虚拟机
    docker pull越来越慢的解决方法
  • 原文地址:https://www.cnblogs.com/eighty-five/p/13633594.html
Copyright © 2020-2023  润新知