zoukankan      html  css  js  c++  java
  • 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--; // 结束时让其值跟初始化一样,防止再次调用时还保留之前调用过的结果
    }

  • 相关阅读:
    低耦合高内聚
    Python 爬虫库
    Python 爬虫的工具列表
    selenium对浏览器操作、鼠标操作等总结
    简单文件操作
    环境错误2
    环境错误
    pip list 警告消除方法
    python 安装scrapy错误
    按是否执行程序的角度划分:静态测试、动态测试
  • 原文地址:https://www.cnblogs.com/lin3615/p/3806089.html
Copyright © 2011-2022 走看看