• php static 关键字在 函数中的用法


    至于在类中声明为 static 的属性和方法,这里不描述
    php中的变量作用范围的另一个重要特性就是静态变量(static 变量)。静态变量仅在局部函数域中存在且只被初始化一次,当程序执行离开此作用域时,其值不会消失,会使用上次执行的结果。

    function test()
    {
        $tVar = 10;
        echo $tVar;
        $tVar++;
    }

    以上函数每次调用时都会将 $tVar 的值设为 10 并输出 "10"。将变量加一的 $tVar++ 没有其到效果,因为一旦退出本函数则变量 $tVar 就不存在了。要写一个不会丢失本次计数值的计数函数,要将变量 $tVar 定义为静态(static)的:

    function test()
    {
        static $tVar = 10;
        echo $tVar;
        $tVar++;
    }

    以上函数每调用Test()都会输出 $tVar 的值并加1。

    又如:

    function aa()
    {
        static $bb = array();
        array_push($bb, 'a');
        print_r($bb);
    }

    aa();
    Array
    (
        [0] => a
    )

    aa();
    Array
    (
        [0] => a
        [1] => a
    )

    aa();
    Array
    (
        [0] => a
        [1] => a
        [2] => a
    )

    如果在声明中用表达式的结果对其赋值会导致解析错误。如下:

    function test()
    {
        static $tVar = 10+1; // 出错
        echo $tVar;
        $tVar++;
    }


    静态变量也提供了一种处理递归函数的方法。递归函数是一种自己调用自己的方法。写递归函数时要小心,因为可能会无穷递归下去,没有出口.务必确保 有方法来中止递归。以下这个简单的函数递归计数到 10,使用静态变量 $aa 来判断何时停止:如下:
    function tt()
    {
        static $aa = 0;
        echo 'this is tt ' . $aa . "<br />";
        $aa++;
        if($aa < 10)
        {
            tt();
        }
        $aa--; // 结束时让其值跟初始化一样,防止再次调用时还保留之前调用过的结果
    }

  • 相关阅读:
    服务器的小程序,可以通过浏览器访问该服务器自定义的内容
    GUI小程序---理解GUI
    迷你MyBank
    使用Scanner输入数据-读取文本数据
    文件拷贝代码模型
    File文件操作类
    链表
    ThreadLocal类使用理解
    二叉树
    比较器比较对象数组Comparable和Comparator区别
  • 原文地址:https://www.cnblogs.com/lin3615/p/3806089.html
Copyright © 2020-2023  润新知